Класс 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, что означает, что вертикальный центр компонента должен иметь ту же вертикальную координату, что и вертикальные центры других компонентов с вертикальным выравниванием 0,5.
Аналогично, при вертикальной компоновке BoxLayout пытается сделать все компоненты в столбце шириной как у самого широкого компонента. Если это не удаётся, он выравнивает их горизонтально в соответствии с их горизонтальными выравниваниями. Для PAGE_AXIS компоновки горизонтальное выравнивание выполняется на основе ведущего края компонента. Другими словами, значение горизонтального выравнивания 0,0 означает левый край компонента, если свойство контейнера ComponentOrientation слева направо, и правый край компонента в противном случае.
Вместо прямого использования 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 для Container. Так как метод 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, 2023, 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/21/docs/api/java.desktop/javax/swing/BoxLayout.html