添加到JPanel

时间:2016-10-08 05:51:07

标签: java user-interface

我想知道是否可以从其他类向主JPanel添加下拉菜单,而不是从该类本身调用它。主要是因为我和朋友正在尝试在不同标签中创建不同程序的个人项目。

这是我们的主要GUI:

public class GUI extends JFrame {

    public GUI() {
        setTitle("Andy and Jack's favorite programs");
        JTabbedPane jtp = new JTabbedPane();
        getContentPane().add(jtp);

        JPanel jp1 = new JPanel();
        JLabel label1 = new JLabel();

        JPanel jp2 = new JPanel();
        JLabel label2 = new JLabel();

        jp1.add(label1);
        jtp.addTab("Andy - Encryption Program");
        jp2.add(label2);
        jtp.addTab("Andy - Hello World Program");
   }

   public static void main(String[] args) {
       GUI tp = new GUI();
       tp.setVisible(true);
       tp.setMinimumSize(new Dimension(400, 400));
   }

这是我们的标签之一:

public class encryptionPrograms extends GUI {
    String[] options = new String[] { "XOR", "RSA" };
    ComboBox optionsList = new JComboBox(options);
    jp1.add(optionsList, BorderLayout.CENTER);
}

我不确定我是否正确地做了。刚进入Java,我们一直在玩GUI按钮等。

1 个答案:

答案 0 :(得分:0)

这里有很多“错误”,没有你说你的意图是在你的jPanel上添加一个comboBox,很难告诉你正确的方法,但是可以做到。

但首先:在初始化变量之前始终声明变量,以便您可以为类中的其他方法访问它们:

public class GUI extends JFrame{
    private JPanel jp1,jp2;
    private JLabel label1,label2;
    private JTabbedPane jtp;

    public GUI() {
        setTitle("Andy and Jack's favorite programs");
        jtp = new JTabbedPane();

        jp1 = new JPanel();
        label1 = new JLabel();

        jp2 = new JPanel();
        label2 = new JLabel();

        jp1.add(label1);
        jtp.addTab("Andy - Encryption Program", jp1);
        jp2.add(label2);
        jtp.addTab("Andy - Hello World Program",jp2);

        getContentPane().add(jtp);
   }

如果您需要从另一个类访问变量,可以为它编写一个get方法。

例如:

public JPanel getMainJPanel(){
       return jp1;
}

现在,您可以从另一个类调用getMainJPanel(),以便为其添加组件。添加更多组件后,请记住.revalidate().repaint()框架