繁体   English   中英

添加到JPanel

[英]Adding onto JPanel

我想知道是否可以从其他类向主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按钮等。

这里有很多“错误”,并且无需您说出向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()框架进行操作即可。

暂无
暂无

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

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