Класс BoxLayout
- java.lang.Object
-
- javax.swing.BoxLayout
- Все реализованные интерфейсы:
- LayoutManager, LayoutManager2, Serializable
- Прямые известные подклассы:
- DefaultMenuLayout
public class BoxLayout extends Object implements LayoutManager2, Serializable
Менеджер компоновки, позволяющий размещать несколько компонентов вертикально или горизонтально. Компоненты не будут переносить строки, например, вертикальная компоновка компонентов останется вертикальной при изменении размера окна.
|
|
Вложенность нескольких панелей с различными комбинациями горизонтальной и вертикальной компоновки дает эффект, аналогичный GridBagLayout, но без сложности. Диаграмма демонстрирует две панели, расположенные горизонтально, каждая из которых содержит 3 компонента, расположенных вертикально.
Менеджер BoxLayout создаётся с параметром оси, определяющим тип компоновки. Существует четыре варианта:
X_AXIS — Компоненты выстраиваются горизонтально слева направо.
Y_AXIS — Компоненты выстраиваются вертикально сверху вниз. LINE_AXIS - Components are laid out the way words are laid out in a line, based on the container's ComponentOrientation property. If the container's ComponentOrientation is horizontal then components are laid out horizontally, otherwise they are laid out vertically. For horizontal orientations, if the container's ComponentOrientation is left to right then components are laid out left to right, otherwise they are laid out right to left. For vertical orientations components are always laid out from top to bottom.
PAGE_AXIS - Components are laid out the way text lines are laid out on a page, based on the container's ComponentOrientation property. If the container's ComponentOrientation is horizontal then components are laid out vertically, otherwise they are laid out horizontally. For horizontal orientations, if the container's ComponentOrientation is left to right then components are laid out left to right, otherwise they are laid out right to left. For vertical orientations components are always laid out from top to bottom.
Во всех направлениях компоненты располагаются в том же порядке, в котором они были добавлены в контейнер.
BoxLayout пытается разместить компоненты в соответствии с их предпочтительными ширинами (для горизонтальной компоновки) или высотами (для вертикальной компоновки). Для горизонтальной компоновки, если не все компоненты имеют одинаковую высоту, BoxLayout пытается сделать все компоненты высотой, равной наибольшей высоте компонента. Если это невозможно для конкретного компонента, BoxLayout выравнивает этот компонент вертикально в соответствии с вертикальным выравниванием компонента. По умолчанию компонент имеет вертикальное выравнивание 0,5, что означает, что вертикальный центр компонента должен иметь ту же вертикальную координату, что и вертикальные центры других компонентов с вертикальным выравниванием 0,5.
Аналогично, для вертикальной компоновки BoxLayout пытается сделать все компоненты в столбце такой же ширины, как и самый широкий компонент. Если это не удаётся, он выравнивает их по горизонтали в соответствии с их горизонтальными выравниваниями. Для PAGE_AXIS компоновки горизонтальное выравнивание выполняется на основе ведущего края компонента. Другими словами, значение горизонтального выравнивания 0,0 означает левый край компонента, если ориентация контейнера ComponentOrientation слева направо, и это означает правый край компонента в противном случае.
Вместо непосредственного использования BoxLayout, многие программы используют класс Box. Класс Box — это лёгкий контейнер, который использует BoxLayout. Он также предоставляет удобные методы для эффективного использования BoxLayout. Добавление компонентов в несколько вложенных боксов — мощный способ получить желаемую компоновку.
Дополнительную информацию и примеры см. в Руководстве по использованию BoxLayout в Руководстве Java.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, добавлена поддержка долгосрочного хранения всех JavaBeans™ в пакете java.beans. См. XMLEncoder.
- См. также:
-
Box,ComponentOrientation,JComponent.getAlignmentX(),JComponent.getAlignmentY()
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static int |
LINE_AXIS Указывает, что компоненты должны быть выстроены в направлении строки текста, определяемом свойством target container's |
static int |
PAGE_AXIS Указывает, что компоненты должны быть выстроены в направлении, в котором строки текут по странице, как определено свойством целевого контейнера |
static int |
X_AXIS Указывает, что компоненты должны быть выстроены слева направо. |
static int |
Y_AXIS Указывает, что компоненты должны быть выстроены сверху вниз. |
Конструкторы
| Конструктор и описание |
|---|
BoxLayout(Container target,
int axis) Создаёт менеджер компоновки, который будет выстраивать компоненты вдоль заданной оси. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
addLayoutComponent(Component comp,
Object constraints) Не используется в этом классе. |
void |
addLayoutComponent(String name,
Component comp) Не используется в этом классе. |
int |
getAxis() Возвращает ось, которая использовалась для компоновки компонентов. |
float |
getLayoutAlignmentX(Container target) Возвращает выравнивание по оси X для контейнера. |
float |
getLayoutAlignmentY(Container target) Возвращает выравнивание по оси Y для контейнера. |
Container |
getTarget() Возвращает контейнер, использующий этот менеджер компоновки. |
void |
invalidateLayout(Container target) Указывает, что информация о компоновке дочернего элемента изменилась, и поэтому любые кэшированные вычисления должны быть очищены. |
void |
layoutContainer(Container target) Вызывается AWT при необходимости компоновки указанного контейнера. |
Dimension |
maximumLayoutSize(Container target) Возвращает максимальные размеры, которые целевой контейнер может использовать для компоновки содержащихся в нём компонентов. |
Dimension |
minimumLayoutSize(Container target) Возвращает минимальные размеры, необходимые для компоновки компонентов, содержащихся в указанном целевом контейнере. |
Dimension |
preferredLayoutSize(Container target) Возвращает предпочтительные размеры для этой компоновки, учитывая компоненты в указанном целевом контейнере. |
void |
removeLayoutComponent(Component comp) Не используется в этом классе. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
X_AXIS
public static final int X_AXIS
Указывает, что компоненты должны быть расположены слева направо.
- См. также:
- Значения постоянных полей
Y_AXIS
public static final int Y_AXIS
Указывает, что компоненты должны быть расположены сверху вниз.
- См. также:
- Значения постоянных полей
LINE_AXIS
public static final int LINE_AXIS
Указывает, что компоненты должны быть расположены в направлении строки текста, как определено свойством ComponentOrientation целевого контейнера.
- См. также:
- Значения постоянных полей
PAGE_AXIS
public static final int PAGE_AXIS
Указывает, что компоненты должны быть расположены в направлении, в котором строки текста текут по странице, как определено свойством ComponentOrientation целевого контейнера.
- См. также:
- Значения постоянных полей
Конструкторы
BoxLayout
@ConstructorProperties(value={"target","axis"})
public BoxLayout(Container target,
int axis) Создает менеджер компоновки, который будет размещать компоненты вдоль заданной оси.
- Параметры:
-
target- контейнер, который нужно компоновать -
axis- ось для размещения компонентов. Может быть одним из:BoxLayout.X_AXIS,BoxLayout.Y_AXIS,BoxLayout.LINE_AXISилиBoxLayout.PAGE_AXIS - Исключения:
-
AWTError- если значениеaxisнекорректно
Методы
getTarget
public final Container getTarget()
Возвращает контейнер, который использует этот менеджер компоновки.
- Возвращает:
- контейнер, который использует этот менеджер компоновки
- С тех пор:
- 1.6
getAxis
public final int getAxis()
Возвращает ось, которая использовалась для размещения компонентов. Возвращает один из: BoxLayout.X_AXIS, BoxLayout.Y_AXIS, BoxLayout.LINE_AXIS или BoxLayout.PAGE_AXIS
- Возвращает:
- ось, которая использовалась для размещения компонентов
- С тех пор:
- 1.6
invalidateLayout
public void invalidateLayout(Container target)
Указывает, что у дочернего элемента изменилась информация, связанная с компоновкой, и поэтому любые кэшированные вычисления должны быть сброшены.
Этот метод вызывается AWT при вызове метода invalidate для контейнера. Поскольку метод invalidate может вызываться асинхронно относительно потока событий, этот метод также может вызываться асинхронно.
- Задано:
-
invalidateLayoutв интерфейсеLayoutManager2 - Параметры:
-
target- затронутый контейнер - Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout
addLayoutComponent
public void addLayoutComponent(String name,
Component comp) В этом классе не используется.
- Задано:
-
addLayoutComponentв интерфейсеLayoutManager - Параметры:
-
name- имя компонента -
comp- компонент
removeLayoutComponent
public void removeLayoutComponent(Component comp)
В этом классе не используется.
- Задано:
-
removeLayoutComponentв интерфейсеLayoutManager - Параметры:
-
comp- компонент
addLayoutComponent
public void addLayoutComponent(Component comp,
Object constraints) В этом классе не используется.
- Задано:
-
addLayoutComponentв интерфейсеLayoutManager2 - Параметры:
-
comp- компонент -
constraints- ограничения
preferredLayoutSize
public Dimension preferredLayoutSize(Container target)
Возвращает предпочтительные размеры для этой компоновки, учитывая компоненты в указанном целевом контейнере.
- Задано:
-
preferredLayoutSizeв интерфейсеLayoutManager - Параметры:
-
target- контейнер, который нужно компоновать - Возвращает:
- размеры >= 0 && <= Integer.MAX_VALUE
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout - См. также:
-
Container,minimumLayoutSize(java.awt.Container),maximumLayoutSize(java.awt.Container)
minimumLayoutSize
public Dimension minimumLayoutSize(Container target)
Возвращает минимальные размеры, необходимые для размещения компонентов, содержащихся в указанном целевом контейнере.
- Задано:
-
minimumLayoutSizeв интерфейсеLayoutManager - Параметры:
-
target- контейнер, который нужно компоновать - Возвращает:
- размеры >= 0 && <= Integer.MAX_VALUE
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout - См. также:
-
preferredLayoutSize(java.awt.Container),maximumLayoutSize(java.awt.Container)
maximumLayoutSize
public Dimension maximumLayoutSize(Container target)
Возвращает максимальные размеры, которые целевой контейнер может использовать для размещения содержащихся в нем компонентов.
- Задано:
-
maximumLayoutSizeв интерфейсеLayoutManager2 - Параметры:
-
target- контейнер, который нужно компоновать - Возвращает:
- размеры >= 0 && <= Integer.MAX_VALUE
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout - См. также:
-
preferredLayoutSize(java.awt.Container),minimumLayoutSize(java.awt.Container)
getLayoutAlignmentX
public float getLayoutAlignmentX(Container target)
Возвращает выравнивание по оси X для контейнера. Если коробка горизонтальная, возвращается значение по умолчанию. В противном случае, возвращается выравнивание, необходимое для размещения дочерних элементов по оси X.
- Задано:
-
getLayoutAlignmentXв интерфейсеLayoutManager2 - Параметры:
-
target- контейнер - Возвращает:
- выравнивание >= 0.0f && <= 1.0f
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout
getLayoutAlignmentY
public float getLayoutAlignmentY(Container target)
Возвращает выравнивание по оси Y для контейнера. Если коробка вертикальная, возвращается значение по умолчанию. В противном случае, возвращается выравнивание, необходимое для размещения дочерних элементов по оси Y.
- Задано:
-
getLayoutAlignmentYв интерфейсеLayoutManager2 - Параметры:
-
target- контейнер - Возвращает:
- выравнивание >= 0.0f && <= 1.0f
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout
layoutContainer
public void layoutContainer(Container target)
Вызывается AWT, когда нужно расположить указанный контейнер.
- Задано:
-
layoutContainerв интерфейсеLayoutManager - Параметры:
-
target- контейнер для размещения - Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.