Класс AsyncBoxView
- java.lang.Object
-
- javax.swing.text.View
-
- javax.swing.text.AsyncBoxView
- Все реализованные интерфейсы:
- SwingConstants
public class AsyncBoxView extends View
Ящик, выполняющий вычисление макета асинхронно. Это полезно для поддержания работы потока событий графического интерфейса, не выполняя вычисление макета в нём. Вычисление макета выполняется по операции с дочерними представлениями. После доступа к каждому дочернему представлению для какой-либо части вычисления макета (потенциально длительной операции) оставшиеся задачи могут быть отменены или может быть взята на себя новая задача с более высоким приоритетом (например, для обработки синхронного запроса или видимой области).
В то время как к дочернему представлению осуществляется доступ, приобретается блокировка чтения на связанном документе, чтобы модель оставалась стабильной во время доступа.
- С:
- 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, определяющее, следует ли рассматривать главный размах как оцененный. Если это свойство true, значение setSize по главной оси изменит требования по главной оси, и инкрементные изменения будут игнорироваться до тех пор, пока все дочерние элементы не будут обновлены (что приведет к автоматическому установлению свойства в false). Если свойство false, значение majorSpan считается точным, и инкрементные изменения будут добавлены в итог по мере их вычисления.
- С:
- 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, чтобы делать/хранить больше.
majorRequirementChange
protected void majorRequirementChange(AsyncBoxView.ChildState cs,
float delta) Требования изменились по главной оси. Этот метод вызывается потоком, выполняющим компоновку для данного объекта ChildState, когда он завершил получение новых предпочтений дочерних представлений. Обычно это поток компоновки, но может быть и поток событий, если он пытается немедленно обновить что-либо (например, для выполнения преобразования модель/представление).
Этот метод реализован для того, чтобы отметить главную ось как измененную, чтобы последующая проверка необходимости публикации требований в родительском представлении учитывала главную ось. Если размах по главной оси не оценен, он обновляется заданной разностью, чтобы отразить инкрементное изменение. Разность игнорируется, если главный размах оценен.
minorRequirementChange
protected void minorRequirementChange(AsyncBoxView.ChildState cs)
Требования изменились по второстепенной оси. Этот метод вызывается потоком, выполняющим компоновку для данного объекта ChildState, когда он завершил получение новых предпочтений дочерних представлений. Обычно это поток компоновки, но может быть и поток GUI, если он пытается немедленно обновить что-либо (например, для выполнения преобразования модель/представление).
flushRequirementChanges
protected void flushRequirementChanges()
Опубликовать изменения предпочтений вверх по родительскому представлению. Обычно вызывается потоком компоновки.
replace
public void replace(int offset,
int length,
View[] views) Вызывает суперкласс для обновления дочерних представлений и обновляет записи состояния для дочерних элементов. Ожидается, что этот метод будет вызван при наличии write-блокировки на модели, чтобы взаимодействие с потоком компоновки не происходило (т.е. поток компоновки получает read-блокировку перед выполнением каких-либо действий).
- Переопределяет:
-
replaceв классеView - Параметры:
-
offset- начальное смещение в дочерних представлениях >= 0 -
length- количество существующих представлений для замены >= 0 -
views- дочерние представления для вставки
loadChildren
protected void loadChildren(ViewFactory f)
Загружает все дочерние элементы для инициализации представления. Вызывается методом setParent. Дочерние классы могут переопределить этот метод, чтобы инициализировать свои дочерние представления другим способом. По умолчанию создается дочернее представление для каждого дочернего элемента.
Обычно write-блокировка на документе активна во время изменения дочерних элементов, что гарантирует безопасность потоков рендеринга и компоновки. Исключением из этого правила является случай, когда представление инициализируется для представления существующего элемента (через этот метод), поэтому оно синхронизировано, чтобы исключить preferenceChanged во время инициализации.
- Параметры:
-
f- фабрика представлений - См. также:
setParent(javax.swing.text.View)
getViewIndexAtPosition
protected int getViewIndexAtPosition(int pos,
Position.Bias b) Возвращает индекс дочернего представления, представляющего заданную позицию в модели. Реализовано для поиска представления в случае, когда для каждого дочернего элемента есть дочернее представление.
- Параметры:
-
pos- позиция >= 0 - Возвращает:
- индекс представления, представляющего заданную позицию, или -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 не вызывается.
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 - Возвращает:
- индекс представления, представляющего заданную позицию, или -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- выделенная область для отрисовки - Возвращает:
- местоположение в модели, которое наилучшим образом представляет данную точку в представлении >= 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- массив, содержащий проверенные смещения - Возвращает:
- местоположение в модели, которое наилучшим образом представляет следующую визуальную позицию
- Выбрасывает:
-
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.