|
|||||||
BorderLayout
Время создания: 19.08.2017 21:02
Текстовые метки: knowledge
Раздел: Java - Structure classes - Layouts
Запись: xintrea/mytetra_db_mcold/master/base/1503165764v352g554kx/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
BorderLayout – пять частей света НОЯБРЬ 8, 2009 4 КОММЕНТАРИЯ BorderLayout – это один из layout Java Swing, который используется для расположения компонентов на контейнере. Принцип, который использует BorderLayout для компоновки прост – всё пространство контейнера разбивается на пять частей. В каждой из этих частей располагается один компонент. При добавлении компонента на контейнер с BorderLayout разработчик обязательно указывает, куда именно он хочет поместить компонент. Посмотрим на конкретном примере, как установить у контейнера BorderLayout. Предположим у нас есть панель JPanel. Мы хотим, чтобы расположением компонентов на панели занимался BorderLayout. Создаем панель и указываем layout при помощи метода setLayout вот так: JPanel panel = new JPanel(); Далее создаем компоненты и добавляем на панель. При добавлении на панель необходимо указать, в какой именно части будет располагаться компонент. Делается это следующим образом: JButton button = new JButton(“Test button”); Как видно из примера, добавление осуществляется при помощи метода add, но c двумя параметрами. Первый параметр – это компонент, который хотим добавить. Второй параметр – константа класса BorderLayout, с помощью которой разработчик говорит BorderLayout’у контейнера, где расположить компонент. Таких констант у BorderLayout несколько. Для того чтобы понять, какая константа отвечает за какую часть посмотрим на рисунок ниже. Думаю так нагляднее. Чтобы лучше понять то, как BorderLayout растягивает компонент (по высоте или ширине контейнера) можно поэкспериментировать – добавлять не сразу все компоненты, а по очереди. К примеру, PAGE_START и PAGE_END растягивают компонент по всей ширине контейнера, при этом высоту не трогают, а LINE_START и LINE_END меняют только высоту компонента, а ширину оставляют нетронутой, CENTER заполняет компонентом всё оставшееся место. Стоит сказать, что не обязательно забивать все пять частей. Можно, к примеру, оставить только PAGE_START, LINE_START и CENTER. Тогда получится вот так: BorderLayout очень хорошо подходит для приложений, окна которых не имеют строго заданных размеров. Пользователь на своё усмотрение может менять размер окна, а его содержимое растягивается вместе с ним. В тестовых примерах добавлялись только кнопки, но можно оперировать также и с контейнерами. Компоновка контейнеров будет происходит аналогичным образом. package al.catalog; import java.awt.BorderLayout; public class TestFrame { public static void createGUI() { JPanel panel = new JPanel(); JButton northButton = new JButton("NORTH (PAGE_START)"); JButton southButton = new JButton("SOUTH (PAGE_END)"); JButton eastButton = new JButton("EAST (LINE_START)"); JButton westButton = new JButton("WEST (LINE_END)"); JButton centerButton = new JButton("CENTER"); frame.getContentPane().add(panel); frame.pack(); public static void main(String[] args) { |
|||||||
Прикрепленные файлы:
|
|||||||
|
|||||||
|