我有几个JPanel
s ,其中包含JLabel
s 和JTextField
s 用于我的 Swing 应用程序中的用户输入。
我正在手动编辑 NetBeans GUI Builder 生成的代码,但仍希望保持类似的布局。
我开始使用GridLayout
. 我可以调整shgap
以使我JLabel
的 s 和JTextField
s 大小合适,但我必须为所有JPanel
s 单独执行此操作。
是否有一个标准LayoutManager
可以根据组件的字体大小计算文本组件的正确高度,并在文本组件之间和/或周围用空格填充包含组件?
编辑:
根据要求,这是一个 SSCCE 来展示我正在尝试做的事情
网格布局SSCCE:
package gridlayoutsscce;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class GridLayoutSSCCE {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame("Grid Layout SSCCE");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new GridLayoutSSCCEPanel());
f.pack();
f.setVisible(true);
}
});
}
}
GridLayoutSSCCEPanel:
package gridlayoutsscce;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
class GridLayoutSSCCEPanel extends JPanel {
public GridLayoutSSCCEPanel() {
this.setLayout(new GridLayout(2, 2));
this.add(new JLabel("Label 1:"));
this.add(new JTextField());
this.add(new JLabel("Label 2:"));
this.add(new JTextField());
}
}
当我第一次运行程序时,这看起来很好。但是,当我调整窗口大小时,文本字段会伸展,因此每个字段都填充了窗口高度的一半。我希望它们在窗口调整大小时保持原来的高度。