Я создаю панель инструментов, которая содержит поле поиска и несколько кнопок.Я бы хотел, чтобы поле поиска увеличивалось в размере (только на ширину), когда родительский контейнер становится шире, например, когда пользователь настраивает разделенную панель.В настоящее время текстовое поле и кнопки останутся одинакового размера, а пробел будет добавлен с обеих сторон при расширении контейнера.Я могу добиться этого растущего эффекта, используя BorderLayout
в контейнере и помещая кнопки на LINE_END
и текстовое поле в CENTER
.Проблема с этим заключается в том, что текстовое поле теперь становится выше стандартного текстового поля и выглядит некрасиво.Такое поведение имеет смысл, поскольку менеджер BorderLayout
предоставит все дополнительное пространство (включая вертикальное и горизонтальное пространство) текстовому полю CENTER
.Я пытался ограничить вертикальный рост, поместив максимальный размер в текстовое поле, но BorderLayout
не выполнит его.
Вот что я получил:
final JTextField searchField = new JTextField("Enter your search terms");
searchField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 25));
final JPanel controls = new JPanel(new BorderLayout());
controls.add(searchField, BorderLayout.CENTER);
controls.add(new JPanel(){{
add(new JButton("Search")); add(new JButton("I'm Feeling Lucky"));
}}, BorderLayout.LINE_END);
Казалось бы, такое поведение обычно желательно, и его должно быть легко реализовать, но мне не повезло после просмотра всех учебных пособий по Oracle / Sun и результатов поиска Google.
У кого-нибудь есть какие-нибудь решения для этого?Мне нужно придерживаться стандартных компонентов Java Swing - пожалуйста, никаких сторонних библиотек.
Спасибо!