Spec-Zone.ru › OpenJDK 21

Класс 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

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

Поля, объявленные в классе javax.swing.text.View

BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS

Поля, объявленные в интерфейсе javax.swing.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)
Вызывается зоной при её загрузке.

Методы, объявленные в классе javax.swing.text.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

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

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

Методы, объявленные в классе javax.swing.text.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

Методы, объявленные в классе java.lang.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)
Устанавливает текущее значение количества зон, разрешённых для загрузки одновременно. Это вызовет IllegalArgumentException, если mzl меньше 1.
Параметры:
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(javax.swing.text.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(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • View.changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

insertUpdate

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

removeUpdate

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

© 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/text/ZoneView.html

Spec-Zone.ru

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