【发布时间】:2021-12-12 04:18:51
【问题描述】:
当我最初运行我的 Java Swing 应用程序时,JPanel 中的 JLabel 和 JTextField 组件的填充和边距看起来不错。但是,每当我调整应用程序的大小时,标签和文本字段的填充和边距都会增加很多,以至于看起来不太好。
我知道GridLayout 有一定数量的垂直和水平间距,但是随着应用程序大小的增加,我可以做些什么来使间距看起来更好?我还希望文本字段中的文本随着文本字段的增加而调整大小,但一直无法弄清楚。
我一直在考虑使用GridBagLayout,但也没有太多运气。随着尺寸的增加,间距太大,看起来不太好,我一直无法找到或学习一个好的解决方案。
如果有任何建议,我将不胜感激。
代码:
package TestPackage;
import java.awt.GridLayout;
import javax.swing.*;
public class TestGridLayout {
public static void main(String[] args) {
JPanel testPanel = new JPanel();
GridLayout layoutManager = new GridLayout(5,2);
testPanel.setLayout(layoutManager);
JLabel platformEnumerationNameLabel = new JLabel();
JLabel logicalEnumerationNameFieldLabel = new JLabel();
JLabel valueTypeUnitNameFieldLabel = new JLabel();
JLabel measurementNameFieldLabel = new JLabel();
JLabel measurementAxisNameFieldLabel = new JLabel();
JTextField platformEnumerationNameField = new JTextField();
JTextField logicalEnumerationNameField = new JTextField();
JTextField valueTypeUnitNameField = new JTextField();
JTextField measurementNameField = new JTextField();
JTextField measurementAxisNameField = new JTextField();
platformEnumerationNameLabel.setText("Label 1");
testPanel.add(platformEnumerationNameLabel);
platformEnumerationNameField.setText("input some data");
testPanel.add(platformEnumerationNameField);
logicalEnumerationNameFieldLabel.setText("Label 2");
testPanel.add(logicalEnumerationNameFieldLabel);
logicalEnumerationNameField.setText("input some data");
testPanel.add(logicalEnumerationNameField);
valueTypeUnitNameFieldLabel.setText("Label 3");
testPanel.add(valueTypeUnitNameFieldLabel);
valueTypeUnitNameField.setText("input some data");
testPanel.add(valueTypeUnitNameField);
measurementNameFieldLabel.setText("Label 4");
testPanel.add(measurementNameFieldLabel);
measurementNameField.setText("input some data");
testPanel.add(measurementNameField);
measurementAxisNameFieldLabel.setText("Label 5");
testPanel.add(measurementAxisNameFieldLabel);
measurementAxisNameField.setText("input some data");
testPanel.add(measurementAxisNameField);
JDialog dialog = new JDialog();
dialog.add(testPanel);
dialog.setSize(700,200);
dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
}
}
【问题讨论】:
-
使用
GridBagLayout -
Java Swing 不会自动重新调整字体大小。根据主要
JPanel大小手动计算字体大小会很困难。您可以选择两种或三种字体大小,然后让JFrame自行打包成适当的大小,但这需要您进行额外的编码。否则,@MadProgrammer 的答案是你能做的最好的。
标签: java swing padding margin grid-layout