How do I keep JTextFields in a Java Swing BoxLayout from expanding?

java, layout, layout-manager, swing

Solution

textField = new JTextField( ... );
textField.setMaximumSize( textField.getPreferredSize() );

Problem

I have a `JPanel` that looks something like this: ``` 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. ``` My problem is that the `JTextField`s become huge vertically. I want them to only be high enough for a single line, since that is all that the user can type in them. The buttons are fine (they don't expand vertically). Is there any way to keep the `JTextField`s from expanding? I'm pretty new to Swing, so let me know if I'm doing everything horribly wrong.

Original source