Макет Java GUI для фиксированного положения компонентов и прокручиваемого окна

#java #swing #user-interface #layout

#java #swing #пользовательский интерфейс #макет

Вопрос:

Я хочу создать программу таким образом, чтобы компоненты вели себя так, как показано на рисунках ниже

  • Текстовое поле и кнопка поиска имеют фиксированные позиции и не перемещаются и не изменяют размер
  • Текстовая область также не перемещается, но становится больше или меньше в зависимости от размера окна

Я бы также хотел, чтобы текстовая область была «прокручиваемой», когда она недостаточно велика, чтобы отображать весь текст сразу.

Есть какие-нибудь советы? 🙂

Окно до и после расширения

Ответ №1:

Секрет управления макетом заключается в том, чтобы вложить панели в разные менеджеры макетов для достижения желаемого макета.

Итак, вы начинаете с BorderLayout фрейма по умолчанию.

Затем вы создаете панель для своих кнопок и добавляете панель во фрейм:

 JPanel buttonPanel = new JPanel( new FlowLayout(...) );
buttonPanel.add( button1 );
..
frame.add(buttonPanel, BorderLayout.PAGE_START);
 

Затем вы добавляете свою текстовую область во фрейм:

 JTextArea textArea = new JTextArea(10, 30);
frame.add(new JScrollPane(textArea), BorderLayout.CENTER);
 

Теперь две вещи происходят с текстовой областью:

  1. он изменит размер, чтобы заполнить пространство фрейма
  2. полосы прокрутки появятся при необходимости.

Прочитайте раздел из руководства Swing по менеджерам компоновки для получения дополнительной информации и рабочих примеров.

Комментарии:

1. И, к сожалению, он забыл: (