繁体   English   中英

在JFrame上调用JPanel

[英]Calling a JPanel onto a JFrame

我在调用我制作为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不会出现。 谁能帮我这个?

谢谢!

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

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

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

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

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

可能是您忘记在JButton上添加ActionListner了。

尝试这种方式

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM