Класс BoxLayout
- Все реализованные интерфейсы:
-
LayoutManager,LayoutManager2,Serializable
- Прямые известные подклассы:
DefaultMenuLayout
public class BoxLayout extends Object implements LayoutManager2, Serializable
Пример:
Вложенные панели с различными комбинациями горизонтальной и вертикальной компоновки обеспечивают эффект, похожий на GridBagLayout, но без сложности. На диаграмме показаны две панели, расположенные горизонтально, каждая из которых содержит 3 компонента, расположенные вертикально.
Управляющий компоновкой BoxLayout создается с параметром оси, который определяет тип выполняемой компоновки. Существует четыре варианта:
-
X_AXIS- Компоненты выстраиваются горизонтально слева направо. -
Y_AXIS- Компоненты выстраиваются вертикально сверху вниз. -
LINE_AXIS- Компоненты выстраиваются так же, как слова в строке, на основе свойстваComponentOrientationконтейнера. Если ориентация контейнера горизонтальная, компоненты выстраиваются горизонтально, в противном случае они выстраиваются вертикально. Для горизонтальной ориентации, если свойствоComponentOrientationконтейнера слева направо, компоненты выстраиваются слева направо, в противном случае они выстраиваются справа налево. Для вертикальной ориентации компоненты всегда выстраиваются сверху вниз. -
PAGE_AXIS- Компоненты выстраиваются так же, как строки текста на странице, на основе свойстваComponentOrientationконтейнера. Если ориентация контейнера горизонтальная, компоненты выстраиваются вертикально, в противном случае они выстраиваются горизонтально. Для горизонтальной ориентации, если свойствоComponentOrientationконтейнера слева направо, компоненты выстраиваются слева направо, в противном случае они выстраиваются справа налево. Для вертикальной ориентации компоненты всегда выстраиваются сверху вниз.
Во всех направлениях компоненты располагаются в том же порядке, в котором они были добавлены в контейнер.
BoxLayout пытается разместить компоненты в соответствии с их предпочтительными ширинами (для горизонтальной компоновки) или высотами (для вертикальной компоновки).
Для горизонтальной компоновки, если у всех компонентов разная высота, BoxLayout пытается сделать все компоненты высотой самого высокого. Если это невозможно для конкретного компонента, то BoxLayout выравнивает этот компонент вертикально, согласно вертикальному выравниванию компонента. По умолчанию у компонента вертикальное выравнивание 0,5, что означает, что вертикальный центр компонента должен иметь ту же вертикальную координату, что и вертикальные центры других компонентов с вертикальным выравниванием 0,5.
Аналогично, для вертикальной компоновки, BoxLayout пытается сделать все компоненты в столбце шириной самого широкого компонента. Если это не удается, то компоненты выравниваются по горизонтали в соответствии с их горизонтальными выравниваниями. Для PAGE_AXIS компоновки горизонтальное выравнивание выполняется на основе ведущего края компонента. Другими словами, значение горизонтального выравнивания 0,0 означает левый край компонента, если ориентация контейнера слева направо, и это означает правый край компонента в противном случае.
Вместо непосредственного использования BoxLayout, многие программы используют класс Box. Класс Box — это легкий контейнер, который использует управляющий компоновкой BoxLayout. Он также предоставляет удобные методы, которые помогут вам эффективно использовать BoxLayout. Добавление компонентов в несколько вложенных блоков — мощный способ получить желаемую компоновку.
Более подробную информацию и примеры см. на странице Как использовать BoxLayout в руководстве Java.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans была добавлена в пакет java.beans. См. XMLEncoder.
- С:
- 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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/BoxLayout.html