繁体   English   中英

如何将JTextFields保存在Java Swing BoxLayout中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM