Класс AsyncBoxView
- java.lang.Object
-
- javax.swing.text.View
-
- javax.swing.text.AsyncBoxView
- Все реализованные интерфейсы:
SwingConstants
public class AsyncBoxView extends View
Ящик, выполняющий размещение элементов асинхронно. Это полезно для поддержания работы потока обработки событий GUI, не выполняя размещение в нём. Размещение выполняется на уровне операций над дочерними представлениями. После того, как каждое дочернее представление обработано для некоторой части размещения (потенциально затратной операции), оставшиеся задачи могут быть отменены или может быть выполнена новая задача с более высоким приоритетом (например, для обслуживания синхронного запроса или области отображения).
В то время как дочернее представление обрабатывается, приобретается блокировка чтения на связанном документе, чтобы модель оставалась стабильной во время доступа.
- С:
- 1.3
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
class | AsyncBoxView.ChildLocator | Класс для управления эффективным расположением дочерних представлений в локальной области во время изменений вокруг этой области. |
class | AsyncBoxView.ChildState | Запись, представляющая состояние размещения дочернего представления. |
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected AsyncBoxView.ChildLocator | locator | Объект, управляющий смещениями дочерних элементов. |
Поля, объявленные в классе 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 Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
AsyncBoxView(Element elem,
int axis) | Создаёт представление ящика, выполняющее асинхронное размещение. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected AsyncBoxView.ChildState | createChildState(View v) | Новые записи ChildState создаются с помощью этого метода, чтобы подклассы могли расширять записи ChildState, чтобы выполнять/сохранять больше. |
protected void | flushRequirementChanges() | Опубликовать изменения в настройках вверх к родительскому представлению. |
float | getBottomInset() | Получить нижнюю часть отступа вокруг представления. |
Shape | getChildAllocation(int index,
Shape a) | Извлекает выделение для данного дочернего представления. |
protected AsyncBoxView.ChildState | getChildState(int index) | Получить объект, представляющий состояние размещения дочернего элемента в заданном индексе. |
protected boolean | getEstimatedMajorSpan() | Оценивается ли текущая основная область? |
protected float | getInsetSpan(int axis) | Получить область по оси, занимаемую отступами. |
protected LayoutQueue | getLayoutQueue() | Получить очередь для использования при размещении. |
float | getLeftInset() | Получить левую часть отступа вокруг представления. |
int | getMajorAxis() | Получить главную ось (ось, по которой выстроены дочерние элементы). |
float | getMaximumSpan(int axis) | Определяет максимальную область этого представления по оси. |
float | getMinimumSpan(int axis) | Определяет минимальную область этого представления по оси. |
int | getMinorAxis() | Получить второстепенную ось (ось, перпендикулярную оси выстраивания). |
int | getNextVisualPositionFrom(int pos,
Position.Bias b,
Shape a,
int direction,
Position.Bias[] biasRet) | Предоставляет способ определения следующего визуально представленного местоположения модели, в котором можно поместить курсор. |
float | getPreferredSpan(int axis) | Определяет предпочтительную область этого представления по оси. |
float | getRightInset() | Получить правую часть отступа вокруг представления. |
float | getTopInset() | Получить верхнюю часть отступа вокруг представления. |
View | getView(int n) | Получить n-е дочернее представление. |
int | getViewCount() | Возвращает количество представлений в этом представлении. |
int | getViewIndex(int pos,
Position.Bias b) | Возвращает индекс дочернего представления, представляющий заданную позицию в модели. |
protected int | getViewIndexAtPosition(int pos,
Position.Bias b) | Извлекает индекс дочернего представления, представляющий заданную позицию в модели. |
protected void | loadChildren(ViewFactory f) | Загружает все дочерние элементы для инициализации представления. |
protected void | majorRequirementChange(AsyncBoxView.ChildState cs,
float delta) | Требования изменились по основной оси. |
protected void | minorRequirementChange(AsyncBoxView.ChildState cs) | Требования изменились по второстепенной оси. |
Shape | modelToView(int pos,
Shape a,
Position.Bias b) | Предоставляет отображение из координатного пространства модели документа в координатное пространство представления, сопоставленного с ним. |
void | paint(Graphics g,
Shape alloc) | Отображает представление с использованием данного выделения и поверхности рендеринга. |
void | preferenceChanged(View child,
boolean width,
boolean height) | Дочерние представления могут вызвать это у родительского представления, чтобы указать, что предпочтения изменились и должны быть пересмотрены для размещения. |
void | replace(int offset,
int length,
View[] views) | Вызывает метод суперкласса для обновления дочерних представлений и обновляет записи состояния для дочерних элементов. |
void | setBottomInset(float i) | Установить нижнюю часть отступа вокруг представления. |
protected void | setEstimatedMajorSpan(boolean isEstimated) | Установить свойство estimatedMajorSpan, определяющее, должно ли основное пространство обрабатываться как оценочное. |
void | setLeftInset(float i) | Установить левую часть отступа вокруг представления. |
void | setParent(View parent) | Устанавливает родителя представления. |
void | setRightInset(float i) | Установить правую часть отступа вокруг представления. |
void | setSize(float width,
float height) | Установить размер представления. |
void | setTopInset(float i) | Установить верхнюю часть отступа вокруг представления. |
protected void | updateLayout(DocumentEvent.ElementChange ec,
DocumentEvent e,
Shape a) | Обновить размещение в ответ на получение уведомления об изменении от модели. |
int | viewToModel(float x,
float y,
Shape a,
Position.Bias[] biasReturn) | Предоставляет отображение из координатного пространства представления в логическое координатное пространство модели. |
Методы, объявленные в классе javax.swing.text.View
append, breakView, changedUpdate, createFragment, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getResizeWeight, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, insertUpdate, isVisible, modelToView, modelToView, remove, removeAll, removeUpdate, updateChildren, viewToModel Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
locator
protected AsyncBoxView.ChildLocator locator
Объект, управляющий смещениями дочерних элементов. Вся блокировка для управления расположением дочерних элементов выполняется на этом объекте.
Конструкторы
AsyncBoxView
public AsyncBoxView(Element elem,
int axis) Создаёт представление ящика, выполняющее асинхронное размещение.
- Параметры:
-
elem- элемент модели для представления -
axis- ось для выстраивания. Может быть либо X_AXIS, либо Y_AXIS.
Методы
getMajorAxis
public int getMajorAxis()
Получить главную ось (ось, по которой выложены дочерние элементы). Значение будет либо X_AXIS, либо Y_AXIS.
- Возвращает:
- главную ось
getMinorAxis
public int getMinorAxis()
Получить второстепенную ось (ось, перпендикулярную оси выкладки). Значение будет либо X_AXIS, либо Y_AXIS.
- Возвращает:
- второстепенную ось
getTopInset
public float getTopInset()
Получить верхнюю часть отступа вокруг представления.
- Возвращает:
- верхнюю часть отступа вокруг представления
setTopInset
public void setTopInset(float i)
Установить верхнюю часть отступа вокруг представления.
- Параметры:
-
i- значение отступа
getBottomInset
public float getBottomInset()
Получить нижнюю часть отступа вокруг представления.
- Возвращает:
- нижнюю часть отступа вокруг представления
setBottomInset
public void setBottomInset(float i)
Установить нижнюю часть отступа вокруг представления.
- Параметры:
-
i- значение отступа
getLeftInset
public float getLeftInset()
Получить левую часть отступа вокруг представления.
- Возвращает:
- левую часть отступа вокруг представления
setLeftInset
public void setLeftInset(float i)
Установить левую часть отступа вокруг представления.
- Параметры:
-
i- значение отступа
getRightInset
public float getRightInset()
Получить правую часть отступа вокруг представления.
- Возвращает:
- правую часть отступа вокруг представления
setRightInset
public void setRightInset(float i)
Установить правую часть отступа вокруг представления.
- Параметры:
-
i- значение отступа
getInsetSpan
protected float getInsetSpan(int axis)
Получить размер отступа по оси.
- Параметры:
-
axis- ось для определения общего отступа (X_AXIS или Y_AXIS). - Возвращает:
- размер отступа по оси
- С:
- 1.4
setEstimatedMajorSpan
protected void setEstimatedMajorSpan(boolean isEstimated)
Установить свойство estimatedMajorSpan, определяющее, рассматривается ли основной размер как приблизительный. Если это свойство истинно, значение setSize по основной оси изменит требования по основной оси, и инкрементные изменения будут игнорироваться, пока все дочерние элементы не будут обновлены (что автоматически установит свойство в ложь). Если свойство ложно, значение majorSpan считается точным, и инкрементные изменения будут добавляться в общую сумму по мере их вычисления.
- Параметры:
-
isEstimated- новое значение свойства estimatedMajorSpan - С:
- 1.4
getEstimatedMajorSpan
protected boolean getEstimatedMajorSpan()
Является ли основной размер приблизительным?
- Возвращает:
- является ли основной размер приблизительным
- С:
- 1.4
getChildState
protected AsyncBoxView.ChildState getChildState(int index)
Получить объект, представляющий состояние макета дочернего элемента по заданному индексу.
- Параметры:
-
index- индекс дочернего элемента. Должно быть значение >= 0 и < getViewCount(). - Возвращает:
- объект, представляющий состояние макета дочернего элемента по заданному индексу
getLayoutQueue
protected LayoutQueue getLayoutQueue()
Получить очередь для использования в макете.
- Возвращает:
- очередь для использования в макете
createChildState
protected AsyncBoxView.ChildState createChildState(View v)
Новые записи ChildState создаются с помощью этого метода, что позволяет подклассам расширять записи ChildState для выполнения/хранения большего объёма данных.
- Параметры:
-
v- представление - Возвращает:
- новое состояние дочернего элемента
majorRequirementChange
protected void majorRequirementChange(AsyncBoxView.ChildState cs,
float delta) Требования по основной оси изменились. Этот метод вызывается потоком, выполняющим макет для данного объекта ChildState, после завершения получения новых предпочтений представления дочернего элемента. Обычно это макетный поток, но может быть потоком событий, если он пытается немедленно обновить что-либо (например, чтобы выполнить преобразование модель/представление).
Этот метод реализован для обозначения изменения основной оси, чтобы последующая проверка необходимости публикации требований в родительское представление учитывала основную ось. Если размер по основной оси не приблизительный, он обновляется на заданный дельту, отражая приращение изменения. Дельта игнорируется, если основной размер приблизительный.
- Параметры:
-
cs- состояние дочернего элемента -
delta- дельта
minorRequirementChange
protected void minorRequirementChange(AsyncBoxView.ChildState cs)
Требования по второстепенной оси изменились. Этот метод вызывается потоком, выполняющим макет для данного объекта ChildState, после завершения получения новых предпочтений представления дочернего элемента. Обычно это макетный поток, но может быть потоком интерфейса пользователя (GUI), если он пытается обновить что-либо немедленно (например, для выполнения преобразования модель/представление).
- Параметры:
-
cs- состояние дочернего элемента
flushRequirementChanges
protected void flushRequirementChanges()
Опубликовать изменения предпочтений вверх к родительскому представлению. Обычно вызывается макетным потоком.
replace
public void replace(int offset,
int length,
View[] views) Вызывает метод суперкласса для обновления дочерних представлений и обновляет записи состояния дочерних элементов. Ожидается, что этот метод будет вызываться при блокировке записи на модели, чтобы избежать взаимодействия с макетным потоком (т.е. макетный поток получает блокировку чтения перед выполнением любых действий).
- Переопределяет:
-
replaceв классеView - Параметры:
-
offset- начальный смещение в дочерние представления >= 0 -
length- количество существующих представлений для замены >= 0 -
views- дочерние представления для вставки
loadChildren
protected void loadChildren(ViewFactory f)
Загружает все дочерние элементы для инициализации представления. Вызывается методом setParent. Подклассы могут переопределить этот метод для инициализации своих дочерних представлений другим способом. По умолчанию создаётся дочернее представление для каждого дочернего элемента.
Обычно блокировка записи удерживается на документе во время изменения дочерних элементов, что обеспечивает безопасность потоков рендеринга и макета. Исключением является случай, когда представление инициализируется для представления существующего элемента (через этот метод), поэтому он синхронизирован для исключения preferenceChanged во время инициализации.
- Параметры:
-
f- фабрика представлений - См. также:
setParent(javax.swing.text.View)
getViewIndexAtPosition
protected int getViewIndexAtPosition(int pos,
Position.Bias b) Получает индекс дочернего представления, соответствующий заданной позиции в модели. Эта реализация получает представление в случае, если для каждого дочернего элемента существует дочернее представление.
- Параметры:
-
pos- позиция >= 0 -
b- смещение позиции - Возвращает:
- индекс представления, соответствующего заданной позиции, или -1, если нет представления, соответствующего этой позиции
updateLayout
protected void updateLayout(DocumentEvent.ElementChange ec,
DocumentEvent e,
Shape a) Обновить макет в ответ на получение уведомления об изменении от модели. Эта реализация отмечает изменение в ChildLocator, чтобы смещения дочерних элементов вычислялись правильно.
- Переопределяет:
-
updateLayoutв классеView - Параметры:
-
ec- изменения элемента, за который отвечает это представление (может быть null, если изменений не было). -
e- информация об изменении из связанного документа -
a- текущее распределение представления - См. также:
-
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)
setParent
public void setParent(View parent)
Установить родителя представления. Эта реализация предоставляет поведение суперкласса и вызывает метод loadChildren, если у этого представления ещё нет дочерних элементов. Дочерние элементы не должны загружаться в конструкторе, так как действие установки родителя может вызвать поиск по иерархии (например, для получения контейнера, в котором он находится). Если у этого представления есть дочерние элементы (представление перемещается из одного места в иерархии представлений в другое), метод loadChildren не будет вызываться.
- Переопределяет:
-
setParentв классеView - Параметры:
-
parent- родитель представления, null, если его нет
preferenceChanged
public void preferenceChanged(View child,
boolean width,
boolean height) Дочерние представления могут вызвать этот метод у родителя, чтобы указать, что предпочтения изменились и должны быть повторно рассмотрены для макета. Эта реализация добавляет новую работу в макетный поток. Этот метод получает сообщения от нескольких потоков через дочерние элементы.
- Переопределяет:
-
preferenceChangedв классеView - Параметры:
-
child- дочернее представление -
width- true, если предпочтения по ширине изменились -
height- true, если предпочтения по высоте изменились - См. также:
JComponent.revalidate()
setSize
public void setSize(float width,
float height) Устанавливает размер представления. Это должно вызвать перерасчет представления, если представление кэширует информацию о макете.
Так как основная ось обновляется асинхронно и должна быть суммой разложенных дочерних элементов, вызов игнорируется для основной оси. Поскольку второстепенная ось гибкая, работа в очереди выполняется для изменения размера дочерних элементов, если изменяется размах по второстепенной оси.
paint
public void paint(Graphics g,
Shape alloc) Отображает представление с использованием заданного распределения и поверхности рендеринга.
Это реализовано для определения того, является ли желаемая область для рендеринга (т.е. не обрезная область) актуальной или нет. Если актуальна, дети отображаются. Если не актуальна, задача построения желаемой области помещается в очередь макета в качестве задачи высокого приоритета. Это позволяет потоку событий перемещаться с помощью рендеринга, если он готов, и откладывать его на более позднее время, если нет (поскольку запросы на рендеринг могут быть запланированы повторно).
- Определено в:
-
paintв классеView - Параметры:
-
g- поверхность рендеринга для использования -
alloc- выделенная область для рендеринга - См. также:
View.paint(java.awt.Graphics, java.awt.Shape)
getPreferredSpan
public float getPreferredSpan(int axis)
Определяет предпочтительный размах для данного представления вдоль оси.
- Определено в:
-
getPreferredSpanв классеView - Параметры:
-
axis- может быть либо View.X_AXIS, либо View.Y_AXIS - Возвращает:
- размах, который представление хотело бы отображать >= 0. Как правило, представлению говорят отображаться в размах, который возвращается, хотя это не гарантируется. Родитель может выбрать изменение размера или разбиение представления.
- Исключения:
-
IllegalArgumentException- для недействительного типа оси - См. также:
View.getPreferredSpan(int)
getMinimumSpan
public float getMinimumSpan(int axis)
Определяет минимальный размах для данного представления вдоль оси.
- Переопределяет:
-
getMinimumSpanв классеView - Параметры:
-
axis- может быть либо View.X_AXIS, либо View.Y_AXIS - Возвращает:
- размах, который представление хотело бы отображать >= 0. Как правило, представлению говорят отображаться в размах, который возвращается, хотя это не гарантируется. Родитель может выбрать изменение размера или разбиение представления.
- Исключения:
-
IllegalArgumentException- для недействительного типа оси - См. также:
View.getPreferredSpan(int)
getMaximumSpan
public float getMaximumSpan(int axis)
Определяет максимальный размах для данного представления вдоль оси.
- Переопределяет:
-
getMaximumSpanв классеView - Параметры:
-
axis- может быть либо View.X_AXIS, либо View.Y_AXIS - Возвращает:
- размах, который представление хотело бы отображать >= 0. Как правило, представлению говорят отображаться в размах, который возвращается, хотя это не гарантируется. Родитель может выбрать изменение размера или разбиение представления.
- Исключения:
-
IllegalArgumentException- для недействительного типа оси - См. также:
View.getPreferredSpan(int)
getViewCount
public int getViewCount()
Возвращает количество представлений в этом представлении. Поскольку по умолчанию это не составное представление, это возвращает 0.
- Переопределяет:
-
getViewCountв классеView - Возвращает:
- количество представлений >= 0
- См. также:
View.getViewCount()
getView
public View getView(int n)
Получает n-е дочернее представление. Поскольку по умолчанию нет дочерних элементов, это возвращает null.
- Переопределяет:
-
getViewв классеView - Параметры:
-
n- номер представления для получения, >= 0 && < getViewCount() - Возвращает:
- представление
getChildAllocation
public Shape getChildAllocation(int index,
Shape a) Получает распределение для данного дочернего представления. Это позволяет выяснить расположение различных представлений без предположения, что представления хранят свое местоположение. Это возвращает null, так как по умолчанию нет дочерних представлений.
- Переопределяет:
-
getChildAllocationв классеView - Параметры:
-
index- индекс дочернего элемента, >= 0 && < getViewCount() -
a- распределение для этого представления. - Возвращает:
- распределение для дочернего элемента
getViewIndex
public int getViewIndex(int pos,
Position.Bias b) Возвращает индекс дочернего представления, представляющий данную позицию в модели. По умолчанию у представления нет дочерних элементов, поэтому эта функция реализована для возвращения -1, чтобы указать, что нет допустимого индекса дочернего элемента для какой-либо позиции.
- Переопределяет:
-
getViewIndexв классеView - Параметры:
-
pos- позиция >= 0 -
b- смещение - Возвращает:
- индекс представления, представляющего данную позицию, или -1, если представление не представляет эту позицию
- С:
- 1.3
modelToView
public Shape modelToView(int pos,
Shape a,
Position.Bias b)
throws BadLocationException Обеспечивает отображение из координатного пространства модели документа в координатное пространство представления, сопоставленного с ним.
- Определено в:
-
modelToViewв классеView - Параметры:
-
pos- позиция для преобразования >= 0 -
a- выделенная область для рендеринга -
b- смещение в сторону предыдущего символа или следующего символа, представленного смещением, в случае, если позиция является границей двух представлений. - Возвращает:
- возвращается прямоугольник, содержащий данную позицию
- Исключения:
-
BadLocationException- если данная позиция не представляет действительное местоположение в связанном документе -
IllegalArgumentException- для недействительного аргумента смещения - См. также:
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
viewToModel
public int viewToModel(float x,
float y,
Shape a,
Position.Bias[] biasReturn) Обеспечивает отображение из координатного пространства представления в логическое координатное пространство модели. Аргумент biasReturn будет заполнен для указания того, что заданная точка ближе к следующему символу в модели или к предыдущему символу в модели.
Ожидается, что этот метод будет вызван потоком GUI, удерживающим блокировку для чтения на связанной модели. Он реализован для поиска дочернего представления и определения его распределения с блокировкой объекта ChildLocator, а также для вызова viewToModel в дочернем представлении с блокировкой объекта ChildState, чтобы избежать взаимодействия с потоком макета.
- Определено в:
-
viewToModelв классеView - Параметры:
-
x- координата X >= 0 -
y- координата Y >= 0 -
a- выделенная область для рендеринга -
biasReturn- возвращаемое смещение - Возвращает:
- местоположение в модели, которое наилучшим образом представляет данную точку в представлении >= 0. Аргумент biasReturn будет заполнен, чтобы указать, что заданная точка ближе к следующему символу в модели или к предыдущему символу в модели.
getNextVisualPositionFrom
public int getNextVisualPositionFrom(int pos,
Position.Bias b,
Shape a,
int direction,
Position.Bias[] biasRet)
throws BadLocationException Предоставляет способ определения следующего визуально представленного местоположения модели, в котором можно разместить курсор. Некоторые представления могут быть невидимыми, они могут не быть в том же порядке, что и в модели, или они просто могут не допускать доступа к некоторым местоположениям в модели. Этот метод позволяет указать позицию для преобразования в диапазоне >=0. Если значение равно -1, позиция будет вычислена автоматически. Если значение < -1, будет выброшено BadLocationException.
- Переопределяет:
-
getNextVisualPositionFromв классеView - Параметры:
-
pos- позиция для преобразования -
a- выделенная область для рендеринга -
direction- направление от текущей позиции, которое можно рассматривать как клавиши со стрелками на клавиатуре; это может быть одно из следующего:SwingConstants.WESTSwingConstants.EASTSwingConstants.NORTHSwingConstants.SOUTH
-
biasRet- массив, содержащий проверенное смещение -
b- смещение - Возвращает:
- местоположение в модели, которое лучше всего представляет следующее визуальное положение
- Исключения:
-
BadLocationException- заданная позиция не является допустимой позицией в документе -
IllegalArgumentException- еслиdirectionнедопустимо
© 1993, 2020, 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/11/docs/api/java.desktop/javax/swing/text/AsyncBoxView.html