Использование менеджера компоновки BoxLayout. Часть 1. Основы

Box в переводе с английского означает ящик. Из названия уже становится ясно, что представляет собой данный менеджер. BoxLayout — это ящик, в который можно складывать компоненты. Причем складывать можно сверху-вниз или слева-направо – это задается разработчиком при инициализации менеджера компоновки BoxLayout. Получается, что BoxLayout располагает компоненты в строчку или в столбец. BoxLayout достаточно простой менеджер компоновки, поэтому использовать его надо в комбинации с другими менеджерами компоновки или с самим BoxLayout.

Посмотрим, как можно использовать BoxLayout в самом простейшем случае. Создадим окошко приложения, в котором будут располагаться несколько кнопок JButton в столбец или в строчку. Посмотрим, что необходимо для этого сделать, чтобы получить результат такой, как показано на рисунках.

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

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

На первый взгляд получается не особо красиво, но это только начало. У BoxLayout имеется достаточно настроек для наведения красоты. Посмотрим теперь на исходный код примеров.

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));

JButton button1 = new JButton("Top");
panel.add(button1);

JButton button2 = new JButton("Center");
panel.add(button2);

JButton button3 = new JButton("Bottom");
panel.add(button3);

Здесь мы создаем панель, устанавливаем у неё BoxLayout. При создании BoxLayout конструктору передается два параметра. Первым параметр – это ссылка на панель JPanel, у которой расположением компонентов будет руководить BoxLayout. Второй параметр – это константа BoxLayout, которая говорит менеджеру компоновки, каким образом располагать компоненты – слева направо или сверху вниз. Другими словами второй параметр задает ориентацию ящика. Константа BoxLayout.X_AXIS задает ориентацию слева направо, BoxLayout.Y_AXIS – сверху вниз. Кроме этого имеется еще две константы, которые также определяют ориентауию менеджера компоновки BoxLayout. Это BoxLayout.LINE_AXIS и BoxLayout.PAGE_AXIS. Первая константа располагается компоненты аналогично строке текста. Я подозреваю следующее поведение (если честно, то не проверял) – если у нас пишут слева направо, то и компоненты будут располагаться слева направо. Вторая константа – аналогично расположению строк на странице. У нас например, строки располагаются одна под другой, значит и компоненты будут располагаться один под другим, то есть сверху вниз. Таким образом в нашем случае для русской локали поведение BoxLayout.LINE_AXIS будет аналогично поведению BoxLayout.X_AXIS, а поведение BoxLayout.PAGE_AXIS — BoxLayout.Y_AXIS.

4 Responses to Использование менеджера компоновки BoxLayout. Часть 1. Основы

  1. Андрей:

    отличный блог, продолжайте

  2. de-nos:

    BoxLayout.LINE_AXIS — располагает компоненты по горизонтали (построчно), но если они перестают умещаться на панели, то они начинают располагаться наследующей строке. Когда и эта строка заполняется компонентами полностью, то происходит переход на следующую строку, и т.д.
    Аналагично и с BoxLayout.PAGE_AXIS, но только компоненты укладываются по вертикали, и при заполнении всего пространства панели по высоте, происходит переход на соседнюю колонку (страницу).

    • Если вкратце — то BoxLayout.LINE_AXIS и BoxLayout.PAGE_AXIS — располагают компоненты в направлении, заданном свойству ComponentOrientation контейнера которому мы устанавливаем менеджер компоновки. Например: если мы укажем panel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); тогда и BoxLayout.LINE_AXIS и BoxLayout.PAGE_AXIS будут размещать компоненты с левого края контейнера.
      Здесь ведь все понятно описано: http://download.oracle.com/javase/tutorial/uiswing/layout/box.html.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: