Поля ввода огромные
BoxLayout
будет пытаться изменить размер компонентов, когда на панели будет доступно дополнительное пространство. Он изменит размер компонента до его максимального размера.
По какой-то причине максимальная высота JTextField
равна Integer.MAX_VALUE
, что не имеет смысла для меня, поскольку высота текста никогда не изменяется при вводе больше текста.
В любом случае у вас есть пара вариантов:
- Используйте другой менеджер раскладки, например
GridBagLayout
. GridBagLayout
будет соответствовать предпочтительному размеру текстовых полей. - Создайте пользовательский
JTestField
и переопределите метод getMaximumSize()
, чтобы вернуть предпочтительную высоту компонента - Используйте панель оболочки.
Для панели оболочки вы можете сделать:
JPanel wrapper = new JPanel( new BorderLayout() );
wrapper.add(registerPanel, BorderLayout.PAGE_START);
return wrapper;
//return registerPanel;
BorderLayout будет учитывать предпочтительную высоту любого компонента, добавляемого в PAGE_START, поэтому нет необходимости BoxLayout для изменения размера любого компонента.