Spec-Zone.ru › OpenJDK 27

Класс BoxLayout

java.lang.Object
javax.swing.BoxLayout
Все реализуемые интерфейсы:
LayoutManager, LayoutManager2, Serializable
Прямые известные подклассы:
DefaultMenuLayout
public class BoxLayout extends Object implements LayoutManager2, Serializable
Менеджер компоновки, который позволяет размещать несколько компонентов вертикально или горизонтально. Компоненты не переносятся, поэтому, например, вертикальное расположение компонентов останется вертикальным при изменении размера окна.

Пример:

The following text describes this graphic.

Вложение нескольких панелей с различными сочетаниями горизонтального и вертикального расположения дает эффект, похожий на 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
См. также:
  • Box
  • ComponentOrientation
  • JComponent.getAlignmentX()
  • JComponent.getAlignmentY()

Краткое описание полей

Модификатор и тип Поле Описание
static final int LINE_AXIS
Указывает, что компоненты должны располагаться в направлении строки текста, определяемом свойством ComponentOrientation целевого контейнера.
static final int PAGE_AXIS
Указывает, что компоненты должны располагаться в направлении движения строк по странице, определяемом свойством ComponentOrientation целевого контейнера.
static final int X_AXIS
Указывает, что компоненты должны располагаться слева направо.
static final int Y_AXIS
Указывает, что компоненты должны располагаться сверху вниз.

Краткое описание конструкторов

Конструктор Описание
BoxLayout(Container target, int axis)
Создает менеджер компоновки, который располагает компоненты вдоль заданной оси.

Краткое описание методов

Модификатор и тип Метод Описание
void addLayoutComponent(Component comp, Object constraints)
Не используется этим классом.
void addLayoutComponent(String name, Component comp)
Не используется этим классом.
final int getAxis()
Возвращает ось, вдоль которой располагались компоненты.
float getLayoutAlignmentX(Container target)
Возвращает выравнивание контейнера вдоль оси X.
float getLayoutAlignmentY(Container target)
Возвращает выравнивание контейнера вдоль оси Y.
final 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)
Не используется этим классом.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
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(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова 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
См. также:
  • Container
  • minimumLayoutSize(Container)
  • maximumLayoutSize(Container)

minimumLayoutSize

public Dimension minimumLayoutSize(Container target)
Возвращает минимальные размеры, необходимые для размещения компонентов, содержащихся в указанном целевом контейнере.
Определено в:
minimumLayoutSize в интерфейсе LayoutManager
Параметры:
target — контейнер, который необходимо скомпоновать
Возвращает:
размеры >= 0 && <= Integer.MAX_VALUE
Исключения:
AWTError — если целевой объект не является контейнером, указанным конструктору BoxLayout
См. также:
  • preferredLayoutSize(Container)
  • maximumLayoutSize(Container)

maximumLayoutSize

public Dimension maximumLayoutSize(Container target)
Возвращает максимальные размеры, которые целевой контейнер может использовать для размещения содержащихся в нем компонентов.
Определено в:
maximumLayoutSize в интерфейсе LayoutManager2
Параметры:
target — контейнер, который необходимо скомпоновать
Возвращает:
размеры >= 0 && <= Integer.MAX_VALUE
Исключения:
AWTError — если целевой объект не является контейнером, указанным конструктору BoxLayout
См. также:
  • preferredLayoutSize(Container)
  • minimumLayoutSize(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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API