Spec-Zone.ru › OpenJDK 25

Класс ZoneView

java.lang.Object
javax.swing.text.View
javax.swing.text.CompositeView
javax.swing.text.BoxView
javax.swing.text.ZoneView
Все реализованные интерфейсы:
SwingConstants
public class ZoneView extends BoxView
ZoneView — это реализация View, которая создаёт зоны, дочерние представления которых не создаются и не хранятся до тех пор, пока они не понадобятся для отображения или преобразования модели и представления. Это позволяет существенно снизить потребление памяти в ситуациях, когда представляемая модель очень велика: объекты представлений создаются только для области, которая активно просматривается или редактируется. Размер дочерних элементов можно оценить тем или иным способом либо вычислить асинхронно, сохранив только результат.

ZoneView расширяет BoxView, чтобы предоставить контейнер, реализующий зоны для своих дочерних элементов. Зоны — это специальные реализации View (дочерние элементы экземпляра этого класса), которые представляют только часть модели, за которую отвечает экземпляр ZoneView. Дочерние представления зон создаются только при попытке их отображения. Представление в форме контейнера хорошо подходит для этого, поскольку:

  • Контейнеры широко используются в представлениях, а наличие контейнера с таким поведением даёт широкие возможности для встраивания этого поведения в иерархию представлений с помощью фабрики представлений.
  • Контейнеры располагают элементы в одном направлении, поэтому их легко надёжно разделить на зоны.
  • Контейнеры обычно имеют простую связь с моделью (то есть создают дочерние представления, напрямую представляющие дочерние элементы).
  • Размер контейнеров проще оценить, чем размер некоторых других форм.

Поведение по умолчанию управляется двумя свойствами: maxZoneSize и maxZonesLoaded. Установка maxZoneSize в Integer.MAX_VALUE приведёт к созданию только одной зоны. Фактически это превратит представление в реализацию шаблона «Декоратор». Если установить maxZonesLoaded в Integer.MAX_VALUE, зоны никогда не будут выгружаться. Для простоты зоны создаются на границах, определяемых дочерними элементами элемента, за который отвечает представление. Зоны могут быть любой реализацией View, но реализация по умолчанию основана на AsyncBoxView, который эффективно поддерживает достаточно большие зоны.

С момента:
1.3
См. также:
  • View

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

Поля, объявленные в классе View

BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS

Поля, объявленные в интерфейсе SwingConstants

BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST

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

Конструктор Описание
ZoneView(Element elem, int axis)
Создаёт ZoneView.

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

Модификатор и тип Метод Описание
protected View createZone(int p0, int p1)
Создаёт представление для заданного диапазона модели, представляющее зону (которая должна находиться в пределах области ответственности этого объекта).
int getMaximumZoneSize()
Возвращает текущий максимальный размер зоны.
int getMaxZonesLoaded()
Возвращает текущее значение количества зон, которые могут быть загружены одновременно.
protected int getViewIndexAtPosition(int pos)
Возвращает индекс дочернего представления, соответствующего заданной позиции в модели.
void insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет о том, что в документ в области ответственности этого представления были вставлены данные.
protected boolean isZoneLoaded(View zone)
Определяет, загружена ли зона.
protected void loadChildren(ViewFactory f)
Загружает все дочерние элементы для инициализации представления.
void removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет о том, что из документа в области ответственности этого представления были удалены данные.
void setMaximumZoneSize(int size)
Задаёт желаемый максимальный размер зоны.
void setMaxZonesLoaded(int mzl)
Задаёт текущее значение количества зон, которые могут быть загружены одновременно.
protected void unloadZone(View zone)
Выгружает зону (переводит её в состояние, позволяющее экономить память).
protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
Поведение суперкласса пытается обновить дочерние представления, что в данном случае нежелательно, поскольку дочерними элементами являются зоны, на которые напрямую не влияют изменения связанного элемента.
protected void zoneWasLoaded(View zone)
Вызывается зоной при её загрузке.

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

baselineLayout, baselineRequirements, calculateMajorAxisRequirements, calculateMinorAxisRequirements, childAllocation, flipEastAndWestAtEnds, forwardUpdate, getAlignment, getAxis, getChildAllocation, getHeight, getMaximumSpan, getMinimumSpan, getOffset, getPreferredSpan, getResizeWeight, getSpan, getViewAtPoint, getWidth, isAfter, isAllocationValid, isBefore, isLayoutValid, layout, layoutChanged, layoutMajorAxis, layoutMinorAxis, modelToView, paint, paintChild, preferenceChanged, replace, setAxis, setSize, viewToModel

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

getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets, setParent

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

append, breakView, changedUpdate, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateLayout, viewToModel

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

ZoneView

public ZoneView(Element elem, int axis)
Создаёт ZoneView.
Параметры:
elem — элемент, за который отвечает это представление
axis — либо View.X_AXIS, либо View.Y_AXIS

Подробное описание методов

getMaximumZoneSize

public int getMaximumZoneSize()
Возвращает текущий максимальный размер зоны.
Возвращает:
текущий максимальный размер зоны

setMaximumZoneSize

public void setMaximumZoneSize(int size)
Задаёт желаемый максимальный размер зоны. Размер зоны может превысить это значение, если размер одного дочернего представления превышает его, поскольку зоны формируются по границам дочерних представлений.
Параметры:
size — количество символов, которые может представлять зона, прежде чем будет предпринята попытка разделить её на зоны меньшего размера.

getMaxZonesLoaded

public int getMaxZonesLoaded()
Возвращает текущее значение количества зон, которые могут быть загружены одновременно.
Возвращает:
текущее значение количества зон, которые могут быть загружены одновременно

setMaxZonesLoaded

public void setMaxZonesLoaded(int mzl)
Задаёт текущее значение количества зон, которые могут быть загружены одновременно. Если mzl меньше 1, будет выброшено исключение IllegalArgumentException.
Параметры:
mzl — желаемое максимальное количество активно загруженных зон; должно быть больше 0
Выбрасывает:
IllegalArgumentException — если mzl меньше 1

zoneWasLoaded

protected void zoneWasLoaded(View zone)
Вызывается зоной при её загрузке. Это происходит при попытке отобразить зону или выполнить преобразование координат модели и представления для зоны, находившейся в незагруженном состоянии. Этот метод проверяет, достигнуто ли максимальное количество зон, и в таком случае выгружает самую старую зону.
Параметры:
zone — только что загруженное дочернее представление.

unloadZone

protected void unloadZone(View zone)
Выгружает зону (переводит её в состояние, позволяющее экономить память). Предполагается, что зоны представляют собой подмножество дочерних элементов элемента, за который отвечает это представление. Поэтому реализация по умолчанию просто удаляет все дочерние элементы.
Параметры:
zone — дочернее представление, которое требуется перевести в незагруженное состояние.

isZoneLoaded

protected boolean isZoneLoaded(View zone)
Определяет, загружена ли зона. Предполагается, что зоны представляют собой подмножество дочерних элементов элемента, за который отвечает это представление. Поэтому реализация по умолчанию возвращает true, если у представления есть дочерние элементы. param zone — дочернее представление
Параметры:
zone — зона
Возвращает:
признак того, загружена ли зона.

createZone

protected View createZone(int p0, int p1)
Создаёт представление для заданного диапазона модели, представляющее зону (которая должна находиться в пределах области ответственности этого объекта). Этот метод вызывается логикой управления зонами для создания новых зон. Подклассы могут использовать другую реализацию зоны, переопределив этот метод.
Параметры:
p0 — начало требуемой зоны. Это значение должно быть >= getStartOffset() и < getEndOffset(). Оно также должно быть < p1.
p1 — конец требуемой зоны. Это значение должно быть > getStartOffset() и <= getEndOffset(). Оно также должно быть > p0.
Возвращает:
представление, соответствующее зоне для заданного диапазона модели

loadChildren

protected void loadChildren(ViewFactory f)
Загружает все дочерние элементы для инициализации представления. Вызывается методом setParent. Метод переопределён так, чтобы не загружать дочерние элементы напрямую (они создаются зонами). Этот метод создаёт начальный набор зон. Однако зоны фактически заполняются только при попытке отобразить их или выполнить преобразование координат модели и представления.
Переопределяет:
loadChildren в классе CompositeView
Параметры:
f — фабрика представлений
См. также:
  • CompositeView.setParent(View)

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos)
Возвращает индекс дочернего представления, соответствующего заданной позиции в модели.
Переопределяет:
getViewIndexAtPosition в классе CompositeView
Параметры:
pos — позиция >= 0
Возвращает:
индекс представления, соответствующего заданной позиции, или -1, если ни одно представление не соответствует этой позиции

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
Поведение суперкласса пытается обновить дочерние представления, что в данном случае нежелательно, поскольку дочерними элементами являются зоны, на которые напрямую не влияют изменения связанного элемента. Метод переопределён как пустой и возвращает false.
Переопределяет:
updateChildren в классе View
Параметры:
ec — сведения об изменении элемента, за который отвечает это представление. При вызове этого метода значение не должно быть null
e — сведения об изменении связанного документа
f — фабрика, используемая для создания дочерних представлений
Возвращает:
признак того, представляют ли дочерние представления дочерние элементы элемента, за который отвечает это представление. Некоторые представления создают дочерние элементы, представляющие часть элемента, за который они отвечают, и должны возвращать false. Эта информация используется для определения того, следует ли передавать представления в диапазоне добавленных элементов далее
См. также:
  • View.insertUpdate(DocumentEvent, Shape, ViewFactory)
  • View.removeUpdate(DocumentEvent, Shape, ViewFactory)
  • View.changedUpdate(DocumentEvent, Shape, ViewFactory)

insertUpdate

public void insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет о том, что в документ в области ответственности этого представления были вставлены данные. В основном выполнение делегируется суперклассу, но метод переопределён для обновления соответствующей зоны (то есть для определения необходимости разделить зону на две или более зоны).
Переопределяет:
insertUpdate в классе View
Параметры:
changes — сведения об изменении связанного документа
a — текущее выделенное представлению пространство
f — фабрика, используемая для повторного создания дочерних элементов, если они есть у представления
См. также:
  • View.insertUpdate(DocumentEvent, Shape, ViewFactory)

removeUpdate

public void removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
Уведомляет о том, что из документа в области ответственности этого представления были удалены данные. В основном выполнение делегируется суперклассу, но метод переопределён для обновления соответствующих зон (то есть для определения необходимости удалить зоны или объединить их с другой зоной).
Переопределяет:
removeUpdate в классе View
Параметры:
changes — сведения об изменении связанного документа
a — текущее выделенное представлению пространство
f — фабрика, используемая для повторного создания дочерних элементов, если они есть у представления
См. также:
  • View.removeUpdate(DocumentEvent, Shape, ViewFactory)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/text/ZoneView.html

Spec-Zone.ru

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