Класс 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 выравнивает его по вертикали в соответствии с выравниванием компонента по Y. По умолчанию выравнивание компонента по Y равно 0.5, что означает, что вертикальный центр компонента должен иметь ту же координату Y, что и вертикальные центры других компонентов с выравниванием по Y, равным 0.5.
Аналогично, при вертикальной компоновке BoxLayout стремится сделать все компоненты в столбце такими же широкими, как самый широкий компонент. Если это не удается, компоненты выравниваются по горизонтали в соответствии с их выравниванием по X. При компоновке PAGE_AXIS горизонтальное выравнивание выполняется относительно ведущего края компонента. Иными словами, значение выравнивания по X, равное 0.0, соответствует левому краю компонента, если свойство ComponentOrientation контейнера задает направление слева направо, и правому краю компонента в противном случае.
Вместо непосредственного использования BoxLayout многие программы используют класс Box. Класс Box — это легковесный контейнер, использующий менеджер компоновки BoxLayout. Он также предоставляет удобные методы, помогающие эффективно использовать BoxLayout. Добавление компонентов в несколько вложенных контейнеров Box — эффективный способ получить нужное расположение.
Дополнительные сведения и примеры см. в разделе Как использовать BoxLayout из Учебного пособия по Java.
Предупреждение: сериализованные объекты этого класса несовместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4, в пакет java.beans добавлена поддержка долговременного хранения всех JavaBeans. См. 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 |
Не используется этим классом. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного времени. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного времени. |
Подробное описание полей
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, 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.