如何在swing中使用多个jpanel选项卡时组织代码

时间:2016-04-14 18:56:30

标签: java swing intellij-idea

我是新手来编程。我创建了一个Jtabbedpane并添加了4个jpanel。

4 jpanel中的所有按钮和标签都在同一个java类中,并且开始变得杂乱无章。我正在使用Intellij。如果我可以将与一个面板相关的所有项目和事件放在它自己的类中,那么将是4个面板的4个类,并且只是对主框架中的那些类的引用。不确定如何执行此操作,因为大多数代码都是由IDE生成的。

如果有办法做到这一点或教程,请告诉我。

1 个答案:

答案 0 :(得分:0)

是的,你可以很容易地解决这个问题。代码生成新面板的任何地方,可能是作为" build"方法,你可以把它拉出来,并在另一个类的结构中。一个例子看起来像这样:

// New class file named testPanel.java
public class testPanel extends JPanel{
    // Constructor
    public textPanel(){
        // Add an example button
        JButton btn_exit = new JButton("Exit");
        btn_exit.addActionListener(new ExitButtonListener());
        buttons.add(btn_exit);
    }

    // Private inner class which does event handling for our example button
    private class ExitButtonListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            System.exit(0);
        }
    }

   // Add whatever other code you like here or above or anywhere else :)
}

然后要在主JFrame中使用该面板,您可以像这样聚合它:

private testPanel pnl_test  = new textPanel();
// You can place this in the constructor 
// for your JFrame without the "MyJFrame."
// But for demonstration purposes I will include it
MyJFrame.add(pnl_test);
// Or if you were placing a panel inside of another panel,
// you can use the same method associated with a JPanel object
MyJPanel.add(pnl_test);