Класс BoxLayout
- Все реализованные интерфейсы:
-
LayoutManager,LayoutManager2,Serializable
- Непосредственные известные подклассы:
DefaultMenuLayout
public class BoxLayout extends Object implements LayoutManager2, Serializable
Пример:
Вложенность нескольких панелей с различными комбинациями горизонтальной и вертикальной компоновки обеспечивает эффект, похожий на GridBagLayout, но без сложности. Диаграмма показывает две панели, расположенные горизонтально, каждая из которых содержит 3 компонента, расположенных вертикально.
Менеджер BoxLayout создаётся с параметром оси, определяющим тип компоновки. Существует четыре варианта:
X_AXIS — Компоненты выстраиваются горизонтально слева направо.
Y_AXIS — Компоненты выстраиваются вертикально сверху вниз. LINE_AXIS— Компоненты выстраиваются так же, как слова в строке, на основе свойства контейнераComponentOrientation. Если ориентация контейнераComponentOrientationгоризонтальная, компоненты выстраиваются горизонтально; в противном случае — вертикально. Для горизонтальной ориентации, если ориентация контейнераComponentOrientationслева направо, компоненты выстраиваются слева направо; в противном случае — справа налево. Для вертикальной ориентации компоненты всегда выстраиваются сверху вниз.
PAGE_AXIS— Компоненты выстраиваются так же, как строки текста на странице, на основе свойства контейнераComponentOrientation. Если ориентация контейнераComponentOrientationгоризонтальная, компоненты выстраиваются вертикально; в противном случае — горизонтально. Для горизонтальной ориентации, если ориентация контейнераComponentOrientationслева направо, компоненты выстраиваются слева направо; в противном случае — справа налево. Для вертикальной ориентации компоненты всегда выстраиваются сверху вниз.
Во всех направлениях компоненты размещаются в том же порядке, в котором они были добавлены в контейнер.
BoxLayout пытается разместить компоненты по их предпочтительным ширинам (для горизонтальной компоновки) или высотам (для вертикальной). Для горизонтальной компоновки, если не все компоненты имеют одинаковую высоту, BoxLayout пытается сделать все компоненты высотой, равной наибольшей высоте компонента. Если это невозможно для конкретного компонента, тогда BoxLayout выравнивает этот компонент вертикально в соответствии с вертикальным выравниванием компонента. По умолчанию вертикальное выравнивание компонента равно 0,5, что означает, что вертикальный центр компонента должен иметь ту же координату Y, что и вертикальные центры других компонентов с вертикальным выравниванием 0,5.
Аналогично, для вертикальной компоновки BoxLayout пытается сделать все компоненты в столбце шириной, равной наибольшей ширине компонента. Если это не удаётся, он выравнивает их по горизонтали в соответствии с их горизонтальными выравниваниями. Для компоновки PAGE_AXIS горизонтальное выравнивание выполняется на основе ведущего края компонента. Иными словами, значение горизонтального выравнивания 0,0 означает левый край компонента, если ориентация контейнера ComponentOrientation слева направо, и правый край компонента в противном случае.
Вместо прямого использования BoxLayout, многие программы используют класс Box. Класс Box — это лёгкий контейнер, использующий BoxLayout. Он также предоставляет удобные методы, помогающие использовать BoxLayout эффективно. Добавление компонентов в несколько вложенных блоков — мощный способ получить желаемое расположение.
Для получения дополнительной информации и примеров см. Как использовать BoxLayout, раздел в Java Tutorial.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. С версии 1.4 добавлена поддержка долгосрочного хранения всех JavaBeans в пакете java.beans. См. XMLEncoder.
- Since:
- 1.2
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
LINE_AXIS |
Указывает, что компоненты должны быть расположены в направлении строки текста, как определено свойством целевого контейнера ComponentOrientation. |
static final int |
PAGE_AXIS |
Указывает, что компоненты должны быть расположены в направлении, в котором строки текста текут по странице, как определено свойством целевого контейнера ComponentOrientation. |
static final int |
X_AXIS |
Указывает, что компоненты должны быть расположены слева направо. |
static final int |
Y_AXIS |
Указывает, что компоненты должны быть расположены сверху вниз. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
BoxLayout |
Создаёт менеджер компоновки, который будет размещать компоненты вдоль заданной оси. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addLayoutComponent |
Не используется в этом классе. |
void |
addLayoutComponent |
Не используется в этом классе. |
final int |
getAxis() |
Возвращает ось, которая использовалась для компоновки компонентов. |
float |
getLayoutAlignmentX |
Возвращает выравнивание по оси X для контейнера. |
float |
getLayoutAlignmentY |
Возвращает выравнивание по оси Y для контейнера. |
final Container |
getTarget() |
Возвращает контейнер, использующий этот менеджер компоновки. |
void |
invalidateLayout |
Указывает, что дочерний элемент изменил информацию, связанную с компоновкой, и, следовательно, все кешированные вычисления должны быть сброшены. |
void |
layoutContainer |
Вызывается AWT, когда указанный контейнер необходимо расположить. |
Dimension |
maximumLayoutSize |
Возвращает максимальные размеры, которые целевой контейнер может использовать для расположения содержащихся в нём компонентов. |
Dimension |
minimumLayoutSize |
Возвращает минимальные размеры, необходимые для расположения компонентов, содержащихся в указанном целевом контейнере. |
Dimension |
preferredLayoutSize |
Возвращает предпочтительные размеры для этой компоновки, учитывая компоненты в указанном целевом контейнере. |
void |
removeLayoutComponent |
Не используется в этом классе. |
Подробное описание полей
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({"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 - См. также:
minimumLayoutSize
public Dimension minimumLayoutSize(Container target)
- Определено в:
-
minimumLayoutSizeв интерфейсеLayoutManager - Параметры:
-
target- контейнер, который требуется расположить - Возвращает:
- размеры >= 0 && <= Integer.MAX_VALUE
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout - См. также:
maximumLayoutSize
public Dimension maximumLayoutSize(Container target)
- Определено в:
-
maximumLayoutSizeв интерфейсеLayoutManager2 - Параметры:
-
target- контейнер, который требуется расположить - Возвращает:
- размеры >= 0 && <= Integer.MAX_VALUE
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout - См. также:
getLayoutAlignmentX
public float getLayoutAlignmentX(Container target)
- Определено в:
-
getLayoutAlignmentXв интерфейсеLayoutManager2 - Параметры:
-
target- контейнер - Возвращает:
- выравнивание >= 0.0f && <= 1.0f
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout
getLayoutAlignmentY
public float getLayoutAlignmentY(Container target)
- Определено в:
-
getLayoutAlignmentYв интерфейсеLayoutManager2 - Параметры:
-
target- контейнер - Возвращает:
- выравнивание >= 0.0f && <= 1.0f
- Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout
layoutContainer
public void layoutContainer(Container target)
- Определено в:
-
layoutContainerв интерфейсеLayoutManager - Параметры:
-
target- контейнер для расположения - Исключения:
-
AWTError- если целевой объект не является контейнером, указанным в конструкторе BoxLayout
© 1993, 2021, 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.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/BoxLayout.html