将JPanel调用到JFrame上

时间:2014-05-21 16:20:18

标签: java swing jframe jpanel

我在调用我制作JFrame的JPanel时遇到了麻烦。

JPanel被称为" SubnetPanel" ==>

SubnetPanel panel = new SubnetPanel(String a, String b, String c);

在我的JFrame中,我做了一个按钮。

private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    String a = JOptionPane.showInputDialog(null, "Geef de naam in : ", 
    "Naam", 1);
    String b = JOptionPane.showInputDialog(null, "Geef het netwerkadres in : ", 
    "Netwerkadres", 1);
    String c = JOptionPane.showInputDialog(null, "Geef het subnetmask in : ", 
    "Subnetmask", 1);

    this.add(new SubnetPanel(a,b,c) {
             @Override
             public void paintComponent( Graphics g ) {
                super.paintComponent(g);
                Graphics2D g2 = (Graphics2D)g;

                Line2D line = new Line2D.Double(10, 10, 40, 40);
                g2.setColor(Color.blue);
                g2.setStroke(new BasicStroke(10));
                g2.draw(line);
             }
        });
        this.setVisible( true );

} 

但是当我执行我的JFrame并单击按钮时,JFrame不会出现。 任何人都可以帮我这个吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

从可见框添加(或删除)组件的基本代码是:

panel.add(...);
panel.revalidate();
panel.repaint();

在您的情况下,“面板”将是您的JFrame的内容窗格。

此外,当您进行自定义绘制时,还需要覆盖面板的getPreferredSize()方法,以便布局管理器可以使用此信息来设置面板的大小/位置。

答案 1 :(得分:0)

虽然您已将面板添加到框架中,但它最初将位于(0,0),尺寸为0×0,因此您将无法看到它。您需要调整大小和位置,例如在框架上调用pack()

答案 2 :(得分:0)

您可能忘记在ActionListner上添加JButton

尝试这种方式

    JButton jButton = new JButton("Click"); // Your actual button is here
    jButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {                
            jButtonActionPerformed(e);
        }
    });