[英]How do I keep JTextFields in a Java Swing BoxLayout from expanding?
我有一个看起来像这样的JPanel
:
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
...
panel.add(jTextField1);
panel.add(Box.createVerticalStrut(10));
panel.add(jButton1);
panel.add(Box.createVerticalStrut(30));
panel.add(jTextField2);
panel.add(Box.createVerticalStrut(10));
panel.add(jButton2);
... //etc.
我的问题是JTextField
垂直变大。 我希望它们只对单行足够高,因为这是用户可以输入的全部内容。 按钮很好(它们不垂直扩展)。
有没有办法阻止JTextField
扩展? 我对Swing很新,所以让我知道我是否做了一切可怕的错误。
textField = new JTextField( ... );
textField.setMaximumSize( textField.getPreferredSize() );
如果您希望宽度不断变化,只需将其设置为MAX INT即可。 所以...
textField.setMaximumSize( new Dimension(Integer.MAX_VALUE, textField.getPreferredSize().height) );
在我的情况下,我需要结合所有答案才能正常工作。 如果我不使用胶水,它不会垂直居中; 如果我不限制最大尺寸,它会垂直延伸; 如果我限制宽度和高度,它太小,只有足够宽以包含初始化文本。
textField = new JTextField("Hello, world!");
textField.setMaximumSize(
new Dimension(Integer.MAX_VALUE,
textField.getPreferredSize().height));
Box box = Box.createVerticalBox();
box.add(Box.createVerticalGlue());
box.add(textField);
box.add(Box.createVerticalGlue());
设置最大高度。 或将它们放在滚动区域
JPanel panel = new JPanel();
Box box = Box.createVerticalBox();
JTextField tf = new JTextField(8);
box.add(tf);
panel.add(box);
frame.getContentPane().add(panel, BorderLayout.CENTER);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.