繁体   English   中英

如何将多个JPanels添加到具有不同大小的JFrame

[英]How to add multiple JPanels to JFrame with different sizes

我试图从stackoverflow做到这一点:

将多个jPanels添加到jFrame

但这似乎无法像示例中那样解决,有人可以告诉我我做错了什么吗? 我试图将多个具有各自大小的JPanel添加到JFrame。 我还希望可以为每个JPanel提供特定的大小和功能,以便将它们放在我想要的确切位置上。

我尝试制作的图片: 小样

到目前为止,这是我的代码:public ReserveringenGUI(ReserveringController controller){this.controller = new ReserveringController(); makeFrame(); }

public void makeFrame() {
    JFrame frame1 = new JFrame();
    frame1.setTitle("Reserveringen");
    frame1.setSize(800, 500);
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel container = new JPanel();
    container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS));

    JPanel willekeurigPanel = new JPanel();
    willekeurigPanel.setSize(400, 500);
    willekeurigPanel.setBackground(Color.YELLOW);
    willekeurigPanel.setVisible(true);

    JPanel overzichtPanel = new JPanel();
    overzichtPanel.setSize(400, 500);
    overzichtPanel.setBackground(Color.red);
    overzichtPanel.setVisible(true);

    DateFormat format = new SimpleDateFormat("dd-MM-yyyy");
    DateFormatter df = new DateFormatter(format);
    JFormattedTextField dateBeginField = new JFormattedTextField(df);
    dateBeginField.setPreferredSize(new Dimension(250, 20));
    dateBeginField.setValue(new Date());

    JFormattedTextField dateEndField = new JFormattedTextField(df);
    dateEndField.setPreferredSize(new Dimension(250, 20));
    dateEndField.setValue(new Date());

    JTextField klantnummer = new JTextField();
    klantnummer.setPreferredSize(new Dimension(250, 20));
    JTextField artikelnummer = new JTextField();
    artikelnummer.setPreferredSize(new Dimension(250, 20));

    JLabel dateBeginLabel = new JLabel("Begin Datum ");
    JLabel dateEndLabel = new JLabel("Eind datum: ");
    JLabel klantID = new JLabel("Klant nummer: ");
    JLabel artikelID = new JLabel("Artikel nummer: ");

    JButton voegReserveringToe = new JButton("Voeg toe");

    voegReserveringToe.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            voegReserveringToeActionPerformed(evt);
        }
    });

    willekeurigPanel.add(dateBeginLabel);
    willekeurigPanel.add(dateBeginField);

    willekeurigPanel.add(dateEndLabel);
    willekeurigPanel.add(dateEndField);

    willekeurigPanel.add(klantID);
    willekeurigPanel.add(klantnummer);

    willekeurigPanel.add(artikelID);
    willekeurigPanel.add(artikelnummer);

    willekeurigPanel.add(voegReserveringToe);



    container.add(willekeurigPanel);
    container.add(overzichtPanel);

    frame1.add(container);
    frame1.setVisible(true);
}

作为讨论在这里 ,不要随意设置组件的大小和位置。 而是让布局完成工作,并根据需要嵌套 使用GroupLayout显示这里的标注的输入字段。 将每个添加到具有BorderLayout的面板的CENTER中,并在左侧的SOUTH添加一个按钮。 最后,将两个面板添加到具有GridLayout(1, 0)的封闭面板中。

暂无
暂无

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

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