我有几个JPanels,其中包含JLabel和JTextFields,用于我的Swing应用程序中的用户输入.
我手动编辑NetBeans GUI Builder生成的代码,但仍希望保持类似的布局.
我开始使用GridLayout.我可以调整hgap以使我的JLabel和JTextFields大小合适,但我必须为所有JPanel单独执行此操作.
是否有一个标准的LayoutManager,它将根据组件的字体大小计算文本组件的正确高度,并在文本组件之间和/或周围填充包含空间的空间?
编辑:
根据要求,这里有一个SSCCE来展示我想要做的事情
GridLayoutSSCCE:
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());
}
}
我第一次运行程序时看起来很好.但是,当我调整窗口大小时,文本字段会拉伸,因此每个文本字段都会填充窗口高度的一半.我希望它们保持与窗口调整大小时最初相同的高度.