java - 如何向 JFrame 添加多个不同大小的 JPanel

标签 java swing layout jframe jpanel

我尝试从 stackoverflow 执行此操作:

adding multiple jPanels to jFrame

但这似乎并不像示例中那样有效,有人能告诉我我做错了什么吗? 我试图将多个具有各自大小的 JPanel 添加到 JFrame 中。我还希望能够为每个 JPanel 提供特定的尺寸并能够将它们放置在我想要的确切位置。

我尝试制作的图片: Mockup

这是我到目前为止的代码: 公共(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);
}

最佳答案

正如所讨论的here 、不要随意设定元件的大小和位置。相反,让布局来完成工作,nesting按要求。使用显示的 GroupLayout here对于带标签的输入字段。将每个添加到具有 BorderLayout 的面板的 CENTER,并在左侧的 SOUTH 中添加一个按钮。最后,将两个面板添加到具有 GridLayout(1, 0) 的封闭面板中。

关于java - 如何向 JFrame 添加多个不同大小的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158642/

相关文章:

java - apache calcite 区分列名和表名

java - 使用 TokenCredentials 的 Exchange Web 服务 (EWS) 单点登录?

java - 垂直对齐 BoxLayout 间距?

java - 如何创建包含图像超链接的 JTable 单元格?

java - 为什么 Swing 认为它在 Spring Boot 下是 headless 的,而在 Spring 或纯 Java 下却不是?

layout - 内联图像落在充满文本的 span 元素下方(两者都在列表中的 <li> 内)

java - 如何获取尚不可见的 JPanel 的大小

java - 配置 maven-failsafe-plugin 以查找不在 src/test/java 中的集成测试

java - 为什么人们想要学习和/或练习使用带有 Java SE 的服务器,而不是使用 EE 方法?

r - 使用 grid.layout 时不遵守的宽度