我尝试从 stackoverflow 执行此操作:
adding multiple jPanels to 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);
}
最佳答案
正如所讨论的here 、不要随意设定元件的大小和位置。相反,让布局来完成工作,nesting按要求。使用显示的 GroupLayout
here对于带标签的输入字段。将每个添加到具有 BorderLayout
的面板的 CENTER
,并在左侧的 SOUTH
中添加一个按钮。最后,将两个面板添加到具有 GridLayout(1, 0)
的封闭面板中。
关于java - 如何向 JFrame 添加多个不同大小的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158642/