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

Mat*_*hew 20 java layout swing layout-manager

我有一个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.
Run Code Online (Sandbox Code Playgroud)

我的问题是JTextFields垂直变大.我希望它们只对单行足够高,因为这是用户可以输入的全部内容.按钮很好(它们不垂直扩展).

有没有办法阻止JTextFields扩张?我对Swing很新,所以让我知道我是否做了一切可怕的错误.

cam*_*ckr 40

textField = new JTextField( ... );
textField.setMaximumSize( textField.getPreferredSize() );
Run Code Online (Sandbox Code Playgroud)

  • 这使得我的文本字段水平很小(同时垂直排序问题)。我现在已经把它排序了(我实际上重新创建了[cbrown的解决方案](http://stackoverflow.com/a/5573666/2187042),但没有意识到他们已经发布了它) (2认同)

小智 29

如果您希望宽度不断变化,只需将其设置为MAX INT即可.所以...

textField.setMaximumSize( 
     new Dimension(Integer.MAX_VALUE, textField.getPreferredSize().height) );