java - 在 Java 中格式化面板内容

标签 java swing jpanel

我有一个面板,我希望其中的内容垂直显示。为此,我使用这行代码:

rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));

由于我正在使用文本字段,因此我希望它们占用一行。但是通过使用上面指定的代码行,面板内的 textfields 会最大化,当我更改窗口大小时,textfield 的大小也会相应更改。我也尝试将其删除,但面板内的内容会水平显示,并且不适合面板内。

这是结果的图像:

这是创建面板内容的代码:

//Creates the form for data and button to save it.
            final TextField name;
            final TextField eMail;
            final TextField dateOfBirth;
            final TextField address;
            JLabel nameLabel = new JLabel("Name:");
            name = new TextField ();
            JLabel eMailLabel = new JLabel("E-mail:");
            eMail = new TextField ();
            JLabel dateOfBirthLabel = new JLabel("Date of birth:");
            dateOfBirth = new TextField ();
            JLabel addressLabel = new JLabel("Address:");
            address = new TextField ();
            rightPanel.add(nameLabel);
            rightPanel.add(name);
            rightPanel.add(eMailLabel);
            rightPanel.add(eMail);
            rightPanel.add(dateOfBirthLabel);
            rightPanel.add(dateOfBirth);
            rightPanel.add(addressLabel);
            rightPanel.add(address);
            rightPanel.add(Box.createRigidArea(new Dimension(20, 20)));
            JButton save = new JButton("Save");
            rightPanel.add(save);

最佳答案

您需要用一些东西填充面板的其余部分,使用 swing.Box

import javax.swing.Box;
rightPanel.add(Box.createVerticalGlue());

将框放在您希望出现空间的位置

有关该主题的更多信息 http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html#filler

您还需要限制输入框的最大高度(对于每个输入调用 - 可能是创建方法):

input.setMaximumSize(new Dimension(Integer.MAX_VALUE, input.getMinimumSize().height));

关于java - 在 Java 中格式化面板内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890294/

相关文章:

java - Java 中的 AWS Lambda 字节流客户端

java - 用Java读取文本文件并使用数据

java - 支持 Java 中的 goto 吗?

java - 计算列的总和并将其放入 jtable 中

java - CardLayout 在 Java 中显示空白 JPanel

java - 如何将 JButton 拉伸(stretch)到 JPanel 的整个高度

java - BroadcastReceiver 没有收到任何内容

java - 如何让JSplitPane中的JTabbedPane填满整个窗口?

java - 在 Swing 中未知数量的组件之间平均分配空间?

java - 如何在具有 GridLayout 的 JPanels 中居中对齐所有内容