【问题标题】:How to add multiple JPanels to JFrame with different sizes如何将多个 JPanel 添加到不同大小的 JFrame
【发布时间】:2014-08-01 06:11:22
【问题描述】:

我尝试从 stackoverflow 执行此操作:

adding multiple jPanels to jFrame

但这似乎不像示例中那样成功,谁能告诉我我做错了什么? 我试图将多个 JPanel 添加到 JFrame 中,每个 JPanel 都有自己的大小。我还希望可以为每个 JPanel 提供特定的尺寸以及将它们放在我想要的确切位置的能力。

我尝试制作的图片:

到目前为止,这是我的代码: 公共 ReserveringenGUI(ReserveringController 控制器) { this.controller = new ReserveringController(); 制作框架(); }

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);
}

【问题讨论】:

  • 这将是一个讨厌的评论,但是......问题是“我试图用这个答案做某事,但我得到了别的东西,该怎么办?!?!”如果您想要一个好的答案,请告诉我们您想要什么以及出了什么问题。 “似乎没有解决”并不是对问题的一个很好的描述。此外,如果您想要特定的尺寸和位置 - 为什么不阅读官方 Oracle 教程的“绝对定位”部分(链接在您已经阅读的问题的答案中)?
  • 添加了一张应该是什么样子的图片,链接工作正常,但它不能让你定位自己

标签: java swing layout jframe jpanel


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 2011-09-13
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    相关资源
    最近更新 更多