几个类似的面板GUI Java

时间:2012-10-16 13:56:24

标签: java swing layout jpanel

我正在创建GUI,我不知道如何解决我的问题。我想做的是像在Main中一样从PanelClass创建几个面板。

我不知道如何:

  1. 我的面板中的名称按钮,并给了他们一些功能(就像我尝试使用按钮b1)
  2. 添加到panel3其他标签和按钮。
  3. 我的主要课程

    public class Main {
    
        JFrame f;
        PanelClass panel1, panel2, panel3;
        JButton b1, b2;
    
        public Main() {
    
            b1 = new JButton("asasa");
    
            f = new JFrame();
            f.setSize(300, 300);
            f.setLayout(new GridBagLayout());
            f.setVisible(true);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            panel1 = new PanelClass(b1, b2, panel1);
            panel2 = new PanelClass(b1, b2, panel2);
            panel3 = new PanelClass(b1, b2, panel3);
    
            f.add(panel1);
            f.add(panel2);
            f.add(panel3);
        }
    
        public static void main(String[] args) {    
            Main m = new Main();    
        }    
    }
    

    我的小组课程

    public class PanelClass extends JPanel {
    
        public PanelClass(JButton btn, JButton btn1, JPanel p) {
    
            super();
            p = new JPanel(new GridBagLayout());
            btn = new JButton();
            btn1 = new JButton();
    
            GridBagConstraints c = new GridBagConstraints();
    
            c.gridx = 0;
            c.gridy = 0;
            p.add(btn, c);
            c.gridx = 0;
            c.gridy = 1;
            p.add(btn1, c);
            add(p);
        }
    }
    

3 个答案:

答案 0 :(得分:5)

  1. 组件一次只能存在于一个可见容器中(除非它被用作flyweight渲染器)。因此,将相同的按钮放入3个面板将不起作用。
  2. 代码传递PanelClass的构造函数中的一个按钮,该按钮被忽略。而是创建了2个新按钮实例。只需将传递的按钮指定给..当我注意到它们不是时,我会说'类级别属性'。完全删除 btn = new JButton();将显示按钮构造函数中传递的文本。
  3. 有关活动,请参阅How to Write an Action Listener

答案 1 :(得分:0)

尝试阅读official Swing tutorial。它解释了如何添加面板,标签等。

要编辑标签名称,您可以使用setText(String name)方法。要向按钮添加功能,必须在每个按钮中实现一个侦听器。像在其他面板中一样添加标签,我没有看到问题。

答案 2 :(得分:0)

要添加“事件”,例如点击和鼠标悬停等 - 您必须为Widget实现正确的“监听器”。浏览有关Swing的任何好的教程,它会告诉你关于它的一切。屏幕上的小部件也是常规对象,因此可以将它们添加到“集合”中,像常规对象一样迭代和播放。注意THREAD的复杂性和警告“跨线程调用对您的程序有害”。