【问题标题】:Adding onto JPanel添加到 JPanel
【发布时间】:2016-10-08 21:11:55
【问题描述】:

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

【问题讨论】:

    标签: java user-interface


    【解决方案1】:

    这里有很多“错误”,如果您不说出向 jPanel 添加组合框的意图是什么,很难告诉您正确的方法,但可以做到。

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

    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()框架

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2013-08-08
      • 2010-12-18
      • 2011-05-06
      • 2013-05-04
      • 2015-11-11
      相关资源
      最近更新 更多