Spec-Zone.ru › OpenJDK 17

Вид класса

java.lang.Object
javax.swing.text.View
Все реализованные интерфейсы:
SwingConstants
Непосредственные подклассы:
AsyncBoxView, ComponentView, CompositeView, GlyphView, IconView, ImageView, PlainView
public abstract class View extends Object implements SwingConstants

Важной частью пакета text является класс View. Как следует из названия, он представляет собой вид модели текста или фрагмент модели текста. Именно этот класс отвечает за отображение компонента текста. Вид не предназначен для представления чего-то совершенно нового, что нужно изучать, а скорее подобен легковесному компоненту.

По умолчанию вид очень легкий. Он содержит ссылку на родительский вид, из которого он может извлекать много чего без хранения состояния, и ссылку на часть модели (Element). Вид не обязан точно представлять элемент в модели, это просто типичное и поэтому удобное отображение. В качестве альтернативы вид может хранить пару объектов Position для поддержания своего местоположения в модели (т.е. представлять фрагмент элемента). Это, как правило, результат форматирования, когда виды были разбиты на части. Удобство существенной связи с элементом упрощает создание фабрик для создания видов и упрощает отслеживание фрагментов вида по мере изменения модели и необходимости изменения вида для отражения модели. Простые виды, следовательно, непосредственно представляют элемент, а сложные виды — нет.

Вид выполняет следующие задачи:

Участие в макете.

Вид имеет метод setSize, который подобен методам doLayout и setSize в Component в совокупности. Вид имеет метод preferenceChanged, который похож на invalidate в Component, за исключением того, что можно проигнорировать только одну ось, и идентифицируется дочерний элемент, запросивший изменение.

Вид выражает желаемый размер в терминах трех значений: минимального, предпочтительного и максимального размера. Макет в виде может выполняться независимо по каждой оси. Для правильной реализации View минимальный размер будет меньше или равен предпочтительному, который в свою очередь будет меньше или равен максимальному размеру.

The above text describes this graphic.

Минимальный набор методов для макета:

  • getMinimumSpan
  • getPreferredSpan
  • getMaximumSpan
  • getAlignment
  • preferenceChanged
  • setSize

Метод setSize должен быть готов к вызову несколько раз (т.е. он может вызываться даже если размер не изменился). Метод setSize обычно вызывается для того, чтобы убедиться, что макет View завершен перед выполнением операции над ним, требующей обновленного макета. Размер вида всегда должен устанавливаться в значение, находящееся между минимальным и максимальным размерами, заданными этим видом. Кроме того, вид всегда должен вызывать метод preferenceChanged в родительском элементе, если он изменил значения макета, которые он хотел, и ожидает, что родительский элемент их учтет. Родительский View не обязан распознавать изменение, пока не будет отправлен preferenceChanged. Это позволяет реализациям родительского View кешировать требования дочерних элементов, если это необходимо. Последовательность вызовов выглядит примерно так:

Sample calling sequence between parent view and child view:
       setSize, getMinimum, getPreferred, getMaximum, getAlignment, setSize

Точная последовательность вызовов зависит от функциональности макета родительского вида (если у вида есть дочерние элементы). Вид может собрать предпочтения дочерних элементов перед тем, как определить, что он даст каждому дочернему элементу, или он может итеративно обновлять дочерние элементы по одному.

Отображение части модели.

Это делается в методе paint, который очень похож на метод paint компонента. Ожидается, что виды могут потенциально заполнять довольно большое дерево. У View есть следующие семантики для рендеринга:

  • Вид получает свое выделение от родительского элемента во время рисования, поэтому он должен быть готов повторно выполнить макет, если выделенная область отличается от того, с чем он готов справиться.
  • Система координат совпадает с системой координат размещающего Component (т.е. Component возвращаемого методом getContainer). Это означает, что дочерний вид живет в той же системе координат, что и родительский вид, если родительский вид явно не изменил систему координат. Чтобы запланировать перерисовку, вид может вызвать repaint для размещающего Component.
  • По умолчанию дочерние элементы не обрезаются. Эффективнее разрешить обрезку вида только в том случае, если это действительно необходимо.
  • Объект Graphics не инициализируется ни каким образом. Вид должен установить любые необходимые параметры.
  • Сам по себе View является прозрачным. Хотя вид может отображаться в своем полном выделении, обычно так не происходит. Отображение выполняется путем обхода дерева реализаций View. Каждый View отвечает за отображение своих дочерних элементов. Эта особенность необходима для обеспечения безопасности потоков. Хотя реализации вида не обязательно должны быть реализованы с учетом безопасности потоков, другие реализации вида, использующие конкурентность, могут полагаться на обход дерева для обеспечения безопасности потоков.
  • Порядок расположения видов относительно модели зависит от реализации. Хотя дочерние виды обычно располагаются в том же порядке, что и в модели, они могут визуально располагаться в совершенно другом порядке. Реализации вида могут иметь Z-порядок, если дочерние элементы перекрываются.

Методы для рендеринга:

  • paint
Перевод между системами координат модели и вида.

Поскольку объекты вида создаются из фабрики и, следовательно, не могут гарантированно иметь определенный шаблон, необходимо выполнить преобразование, чтобы правильно определить пространственное представление модели. Методы для этого:

  • modelToView
  • viewToModel
  • getDocument
  • getElement
  • getStartOffset
  • getEndOffset

Макет должен быть валиден перед попыткой преобразования. Преобразование не является действительным и не должно выполняться во время распространения изменений из модели с помощью DocumentEvent.

Реагирование на изменения в модели.

Если весь вид представлен многими частями (что является лучшим вариантом, если вы хотите иметь возможность изменять вид и писать наименьшее количество нового кода), было бы непрактично иметь большое количество DocumentListener. Если каждый вид слушал модель, только несколько из них фактически заинтересовались бы распространением изменений в конкретное время. Поскольку модель не знает о видах, она не может отфильтровать передачу информации об изменениях. Вместо этого иерархия вида отвечает за распространение информации об изменениях. На любом уровне иерархии вид достаточно хорошо знает своих дочерние элементы, чтобы лучше распределить информацию об изменениях далее. Следовательно, изменения распространяются, начиная с корня иерархии вида. Методы для этого:

  • insertUpdate
  • removeUpdate
  • changedUpdate

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

Модификатор и тип Поле Описание
static final int BadBreakWeight
Вес, указывающий, что представление является плохим местом для разрыва с точки зрения форматирования.
static final int ExcellentBreakWeight
Вес, указывающий, что представление поддерживает разрыв, и это очень привлекательное место для разрыва.
static final int ForcedBreakWeight
Вес, указывающий, что представление поддерживает разрыв, и оно должно быть разорвано для правильного представления при размещении в представлении, которое форматирует своих потомков, разрывая их.
static final int GoodBreakWeight
Вес, указывающий, что представление поддерживает разрыв, но, вероятно, существуют лучшие варианты.
static final int X_AXIS
Ось для операций форматирования/разрыва.
static final int 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

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

Конструктор Описание
View(Element elem)
Создаёт новый View объект.

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

Модификатор и тип Метод Описание
void append(View v)
Добавляет одно дочернее представление.
View breakView(int axis, int offset, float pos, float len)
Пытается разорвать это представление по заданной оси.
void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
Получает уведомление из документа о том, что атрибуты были изменены в месте, за которое это представление отвечает.
View createFragment(int p0, int p1)
Создаёт представление, представляющее часть элемента.
protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
Передаёт данный DocumentEvent дочерним представлениям, которые должны быть уведомлены об изменении модели.
protected void forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
Передаёт DocumentEvent заданному дочернему представлению.
float getAlignment(int axis)
Определяет желаемое выравнивание этого представления вдоль оси.
AttributeSet getAttributes()
Извлекает атрибуты, используемые при рендеринге.
int getBreakWeight(int axis, float pos, float len)
Определяет, насколько привлекательным является место разрыва в этом представлении.
Shape getChildAllocation(int index, Shape a)
Извлекает выделение для данного дочернего представления.
Container getContainer()
Извлекает контейнер, содержащий представление.
Document getDocument()
Извлекает модель, связанную с представлением.
Element getElement()
Извлекает структурную часть объекта, к которой сопоставлено это представление.
int getEndOffset()
Извлекает часть модели, за которую это представление отвечает.
Graphics getGraphics()
Извлекает Graphics для рендеринга.
float getMaximumSpan(int axis)
Определяет максимальную длину этого представления вдоль оси.
float getMinimumSpan(int axis)
Определяет минимальную длину этого представления вдоль оси.
int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
Предлагает способ определения следующего визуально представленного расположения модели, в котором можно разместить курсор.
View getParent()
Возвращает родителя представления.
abstract float getPreferredSpan(int axis)
Определяет предпочтительную длину этого представления вдоль оси.
int getResizeWeight(int axis)
Определяет возможность изменения размера представления вдоль заданной оси.
int getStartOffset()
Извлекает часть модели, за которую это представление отвечает.
String getToolTipText(float x, float y, Shape allocation)
Возвращает текст всплывающей подсказки в указанном месте.
View getView(int n)
Получает n-ое дочернее представление.
int getViewCount()
Возвращает количество представлений в этом представлении.
ViewFactory getViewFactory()
Извлекает реализацию ViewFactory, которая питает иерархию представлений.
int getViewIndex(float x, float y, Shape allocation)
Возвращает индекс дочернего представления, представляющий данную позицию в представлении.
int getViewIndex(int pos, Position.Bias b)
Возвращает индекс дочернего представления, представляющий данную позицию в модели.
void insert(int offs, View v)
Вставляет одно дочернее представление.
void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
Получает уведомление о том, что что-то было вставлено в документ в месте, за которое это представление отвечает.
boolean isVisible()
Возвращает логическое значение, указывающее, отображается ли представление или нет.
Shape modelToView(int pos, Shape a)
Устарело.
abstract Shape modelToView(int pos, Shape a, Position.Bias b)
Предоставляет отображение, для данного символа, из пространства координат модели документа в пространство координат представления.
Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a)
Предоставляет отображение, для данного региона, из пространства координат модели документа в пространство координат представления.
abstract void paint(Graphics g, Shape allocation)
Отображает с использованием заданной поверхности рендеринга и области на этой поверхности.
void preferenceChanged(View child, boolean width, boolean height)
Дочерние представления могут вызвать это у родителя, чтобы указать, что предпочтение изменилось и должно быть пересчитано для размещения.
void remove(int i)
Удаляет одно из дочерних элементов в заданной позиции.
void removeAll()
Удаляет все дочерние элементы.
void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
Получает уведомление о том, что что-то было удалено из документа в месте, за которое это представление отвечает.
void replace(int offset, int length, View[] views)
Заменяет дочерние представления.
void setParent(View parent)
Устанавливает родительское представление для этого представления.
void setSize(float width, float height)
Устанавливает размер представления.
protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
Обновляет дочерние представления в ответ на получение уведомления о том, что модель изменилась, и есть запись об изменении для элемента, за который это представление отвечает.
protected void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
Обновляет макет в ответ на получение уведомления об изменении от модели.
int viewToModel(float x, float y, Shape a)
Устарело.
abstract int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
Предоставляет отображение из пространства координат представления в логическое пространство координат модели.

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

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

Подробное описание полей

BadBreakWeight

public static final int BadBreakWeight
Вес, указывающий, что представление является плохой возможностью разрыва для форматирования. Это значение указывает, что не следует пытаться разбить представление на фрагменты, так как представление не предназначено для фрагментации.
См. также:
  • getBreakWeight(int, float, float)
  • GoodBreakWeight
  • ExcellentBreakWeight
  • ForcedBreakWeight
  • Значения константного поля

GoodBreakWeight

public static final int GoodBreakWeight
Вес, указывающий, что представление поддерживает разрыв, но, вероятно, существуют лучшие возможности.
См. также:
  • getBreakWeight(int, float, float)
  • BadBreakWeight
  • ExcellentBreakWeight
  • ForcedBreakWeight
  • Значения константного поля

ExcellentBreakWeight

public static final int ExcellentBreakWeight
Вес, указывающий, что представление поддерживает разрыв, и это очень привлекательное место для разрыва.
См. также:
  • getBreakWeight(int, float, float)
  • BadBreakWeight
  • GoodBreakWeight
  • ForcedBreakWeight
  • Значения константного поля

ForcedBreakWeight

public static final int ForcedBreakWeight
Вес, указывающий, что представление поддерживает разрыв и должно быть разорвано, чтобы быть правильно представленным при размещении в представлении, которое форматирует своих потомков, разбивая их.
См. также:
  • getBreakWeight(int, float, float)
  • BadBreakWeight
  • GoodBreakWeight
  • ExcellentBreakWeight
  • Значения константного поля

X_AXIS

public static final int X_AXIS
Ось для операций форматирования/разрыва.
См. также:
  • Значения константного поля

Y_AXIS

public static final int Y_AXIS
Ось для операций форматирования/разрыва.
См. также:
  • Значения константного поля

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

View

public View(Element elem)
Создаёт новый объект View.
Параметры:
elem - представляемый Element

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

getParent

public View getParent()
Возвращает родителя представления.
Возвращает:
родителя или null, если родитель отсутствует

isVisible

public boolean isVisible()
Возвращает значение boolean, указывающее, отображается ли представление. По умолчанию все представления отображаются.
Возвращает:
всегда возвращает true

getPreferredSpan

public abstract float getPreferredSpan(int axis)
Определяет предпочтительный размах этого представления по оси.
Параметры:
axis - может быть либо View.X_AXIS, либо View.Y_AXIS
Возвращает:
размах, который представление хочет отобразить. Обычно представление отображается в возвращаемом размахе, хотя это не гарантируется. Родитель может выбрать изменение размера или разрыв представления

getMinimumSpan

public float getMinimumSpan(int axis)
Определяет минимальный размах этого представления по оси.
Параметры:
axis - может быть либо View.X_AXIS, либо View.Y_AXIS
Возвращает:
минимальный размах, в который представление может быть отображено
См. также:
  • getPreferredSpan(int)

getMaximumSpan

public float getMaximumSpan(int axis)
Определяет максимальный размах этого представления по оси.
Параметры:
axis - может быть либо View.X_AXIS, либо View.Y_AXIS
Возвращает:
максимальный размах, в который представление может быть отображено
См. также:
  • getPreferredSpan(int)

preferenceChanged

public void preferenceChanged(View child, boolean width, boolean height)
Подчиненные представления могут вызывать это в родительском представлении, чтобы указать, что предпочтение изменилось и должно быть переоценено для макета. По умолчанию это просто передается вверх к следующему родителю. Корневое представление вызовет revalidate на связанном текстовом компоненте.
Параметры:
child - дочернее представление
width - true, если предпочтение по ширине изменилось
height - true, если предпочтение по высоте изменилось
См. также:
  • JComponent.revalidate()

getAlignment

public float getAlignment(int axis)
Определяет желаемое выравнивание этого представления по оси. Возвращается желаемое выравнивание. Это значение должно быть >= 0.0 и <= 1.0, где 0 обозначает выравнивание по началу, а 1.0 обозначает выравнивание по всему размаху от начала. Выравнивание 0.5 будет центром представления.
Параметры:
axis - может быть либо View.X_AXIS, либо View.Y_AXIS
Возвращает:
значение 0.5

paint

public abstract void paint(Graphics g, Shape allocation)
Отображает с помощью заданной поверхности рендеринга и области на этой поверхности. Представлению может потребоваться выполнить макетирование и создать дочерние представления, чтобы отобразить его в заданном выделении.
Параметры:
g - поверхность рендеринга для использования
allocation - выделенная область для отображения

setParent

public void setParent(View parent)
Устанавливает родительское представление для этого представления. Это гарантированно будет вызвано перед любыми другими методами, если родительское представление функционирует правильно. Это также последний вызываемый метод, так как он вызывается, чтобы указать, что представление было удалено из иерархии. При вызове этого метода для установки родителя в null, этот метод делает то же самое для каждого из его детей, распространяя уведомление о том, что они были отключены от дерева представлений. Если это переопределено, super.setParent() должен быть вызван.
Параметры:
parent - новый родитель или null, если представление удаляется из родителя

getViewCount

public int getViewCount()
Возвращает количество представлений в этом представлении. Поскольку по умолчанию это не составное представление, возвращается 0.
Возвращает:
количество представлений >= 0
См. также:
  • getViewCount()

getView

public View getView(int n)
Получает n-е дочернее представление. Поскольку по умолчанию нет дочерних элементов, возвращается null.
Параметры:
n - номер представления для получения, >= 0 && < getViewCount()
Возвращает:
представление

removeAll

public void removeAll()
Удаляет все дочерние элементы. Это удобный вызов replace.
С:
1.3

remove

public void remove(int i)
Удаляет одно из дочерних элементов в заданной позиции. Это удобный вызов replace.
Параметры:
i - позиция
С:
1.3

insert

public void insert(int offs, View v)
Вставляет одно дочернее представление. Это удобный вызов replace.
Параметры:
offs - смещение представления для вставки перед >= 0
v - представление
С:
1.3
См. также:
  • replace(int, int, javax.swing.text.View[])

append

public void append(View v)
Добавляет один дочерний вид. Это удобный вызов для replace.
Parameters:
v - вид
Since:
1.3
See Also:
  • replace(int, int, javax.swing.text.View[])

replace

public void replace(int offset, int length, View[] views)
Заменяет дочерние представления. Если удалять нечего, это будет вставка. Если добавлять нечего, это будет удаление. У удаляемых представлений родительский элемент будет установлен на null, и внутренняя ссылка на них будет удалена, чтобы их можно было собрать сборщиком мусора. Эта реализация ничего не делает, потому что по умолчанию представление не имеет дочерних элементов.
Parameters:
offset - начальный индекс в дочерних представлениях для вставки новых представлений. Это должно быть значение >= 0 и <= getViewCount
length - количество существующих дочерних представлений для удаления. Это должно быть значение >= 0 и <= (getViewCount() - offset).
views - дочерние представления для добавления. Это значение может быть null для обозначения отсутствия добавляемых представлений (полезно для удаления).
Since:
1.3

getViewIndex

public int getViewIndex(int pos, Position.Bias b)
Возвращает индекс дочернего представления, представляющего заданную позицию в модели. По умолчанию у представления нет дочерних элементов, поэтому эта реализация возвращает -1, чтобы указать, что для любой позиции нет допустимого индекса дочернего элемента.
Parameters:
pos - позиция >= 0
b - смещение
Returns:
индекс представления, представляющего заданную позицию, или -1, если ни одно представление не представляет эту позицию
Since:
1.3

getChildAllocation

public Shape getChildAllocation(int index, Shape a)
Получает выделение для данного дочернего представления. Это позволяет узнать, где расположены различные представления, не делая предположений о том, как представления хранят свои местоположения. Возвращает null, так как по умолчанию дочерних представлений нет.
Parameters:
index - индекс дочернего элемента, >= 0 && < getViewCount()
a - выделение для этого представления
Returns:
выделение для дочернего элемента

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
Предоставляет способ определения следующей визуально представленной позиции модели, в которой можно разместить курсор. Некоторые представления могут быть невидимы, они могут не быть в том же порядке, что и в модели, или они просто могут не позволять доступ к некоторым позициям в модели. Этот метод позволяет указать позицию для преобразования в диапазоне >=0. Если значение равно -1, позиция будет вычислена автоматически. Если значение < -1, будет выброшено BadLocationException.
Parameters:
pos - позиция для преобразования
b - смещение
a - выделенная область для отрисовки
direction - направление от текущей позиции, которое можно представить как клавиши со стрелками, обычно встречающиеся на клавиатуре. Это будет одно из следующих значений:
  • SwingConstants.WEST
  • SwingConstants.EAST
  • SwingConstants.NORTH
  • SwingConstants.SOUTH
biasRet - возвращаемое смещение
Returns:
позиция в модели, которая лучше всего представляет следующую визуальную позицию
Throws:
BadLocationException - заданная позиция не является допустимой позицией в документе
IllegalArgumentException - если direction не имеет одного из приведенных выше допустимых значений

modelToView

public abstract Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
Предоставляет отображение для заданного символа из координатного пространства модели документа в координатное пространство представления.
Parameters:
pos - позиция желаемого символа (>=0)
a - область представления, которая включает запрашиваемый символ
b - смещение к предыдущему символу или следующему символу, представленному смещением, в случае, если позиция является границей двух представлений; b будет иметь одно из этих значений:
  • Position.Bias.Forward
  • Position.Bias.Backward
Returns:
прямоугольник, в пространстве координат представления, символа в указанной позиции
Throws:
BadLocationException - если указанная позиция не представляет допустимое местоположение в связанном документе
IllegalArgumentException - если b не является одним из допустимых Position.Bias значений, перечисленных выше
See Also:
  • viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

modelToView

public Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a) throws BadLocationException
Предоставляет отображение для заданного диапазона из координатного пространства модели документа в координатное пространство представления. Указанный диапазон создается как объединение позиций первого и последнего символов.
Parameters:
p0 - позиция первого символа (>=0)
b0 - смещение первой позиции символа, к предыдущему символу или следующему символу, представленному смещением, в случае, если позиция является границей двух представлений; b0 будет иметь одно из этих значений:
  • Position.Bias.Forward
  • Position.Bias.Backward
p1 - позиция последнего символа (>=0)
b1 - смещение для второй позиции символа, определенное одним из допустимых значений, показанных выше
a - область представления, которая включает запрашиваемый диапазон
Returns:
прямоугольник, являющийся объединением области, заданной позициями первого и последнего символов
Throws:
BadLocationException - если заданная позиция не представляет допустимое местоположение в связанном документе
IllegalArgumentException - если b0 или b1 не являются одним из допустимых Position.Bias значений, перечисленных выше
See Also:
  • viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

viewToModel

public abstract int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
Предоставляет отображение из координатного пространства представления в логическое координатное пространство модели. Аргумент biasReturn будет заполнен, чтобы указать, что заданная точка ближе к следующему символу в модели или к предыдущему символу в модели.
Parameters:
x - координата X >= 0
y - координата Y >= 0
a - выделенная область для отрисовки
biasReturn - возвращаемое смещение
Returns:
местоположение в модели, которое лучше всего представляет заданную точку в представлении >= 0. Аргумент biasReturn будет заполнен, чтобы указать, что заданная точка ближе к следующему символу в модели или к предыдущему символу в модели.

insertUpdate

public void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
Сообщает о вставке в документ в местоположение, за которое это представление отвечает. Для уменьшения нагрузки на подклассы эта функциональность распределена по следующим вызовам, которые могут быть переопределены подклассами:
  1. updateChildren вызывается, если были изменения в элементе, за который это представление отвечает. Если у этого представления есть дочерние представления, которые представляют дочерние элементы, то этот метод должен сделать все необходимое, чтобы убедиться, что дочерние представления правильно представляют модель.
  2. forwardUpdate вызывается для передачи DocumentEvent соответствующим дочерним представлениям.
  3. updateLayout вызывается, чтобы дать представлению возможность либо исправить свой макет, перепланировать макет, либо ничего не делать.
Parameters:
e - информация об изменениях из связанного документа
a - текущее выделение представления
f - фабрика для использования для перестройки, если представление имеет дочерние элементы
See Also:
  • insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

removeUpdate

public void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
Уведомляет о том, что что-то было удалено из документа в позиции, за которую отвечает этот вид. Для уменьшения нагрузки на подклассы эта функциональность распределена по следующим вызовам, которые подклассы могут переопределить:
  1. updateChildren вызывается, если произошли какие-либо изменения в элементе, за который отвечает этот вид. Если у этого вида есть дочерние виды, представляющие дочерние элементы, то этот метод должен выполнить необходимые действия, чтобы убедиться, что дочерние виды правильно представляют модель.
  2. forwardUpdate вызывается для передачи DocumentEvent соответствующим дочерним видам.
  3. updateLayout вызывается, чтобы предоставить виду возможность либо исправить его макет, перепланировать макет, либо ничего не делать.
Parameters:
e - информация о изменении из связанного документа
a - текущее размещение вида
f - фабрика, используемая для перестроения, если вид имеет дочерние элементы
See Also:
  • removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

changedUpdate

public void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
Получает уведомление от документа о том, что атрибуты были изменены в позиции, за которую отвечает этот вид. Для уменьшения нагрузки на подклассы эта функциональность распределена по следующим вызовам, которые подклассы могут переопределить:
  1. updateChildren вызывается, если произошли какие-либо изменения в элементе, за который отвечает этот вид. Если у этого вида есть дочерние виды, представляющие дочерние элементы, то этот метод должен выполнить необходимые действия, чтобы убедиться, что дочерние виды правильно представляют модель.
  2. forwardUpdate вызывается для передачи DocumentEvent соответствующим дочерним видам.
  3. updateLayout вызывается, чтобы предоставить виду возможность либо исправить его макет, перепланировать макет, либо ничего не делать.
Parameters:
e - информация о изменении из связанного документа
a - текущее размещение вида
f - фабрика, используемая для перестроения, если вид имеет дочерние элементы
See Also:
  • changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

getDocument

public Document getDocument()
Получает модель, связанную с видом.
Returns:
модель вида, null если нет
See Also:
  • getDocument()

getStartOffset

public int getStartOffset()
Получает часть модели, за которую отвечает этот вид.
Returns:
начальный смещение в модели >= 0
See Also:
  • getStartOffset()

getEndOffset

public int getEndOffset()
Получает часть модели, за которую отвечает этот вид.
Returns:
конечное смещение в модели >= 0
See Also:
  • getEndOffset()

getElement

public Element getElement()
Получает структурную часть объекта, к которой сопоставлен этот вид. Вид может не отвечать за всю часть элемента.
Returns:
объект
See Also:
  • public Graphics getGraphics()

getGraphics

public Graphics getGraphics()
Получает Graphics для отрисовки. Это можно использовать для определения характеристик шрифта, и оно будет отличаться для печати, чем для виджета.
Returns:
объект Graphics для отрисовки
Since:
1.3

getAttributes

public AttributeSet getAttributes()
Получает атрибуты, используемые при отрисовке. По умолчанию это просто возвращает атрибуты связанного элемента. Этот метод следует использовать вместо прямого использования элемента для получения доступа к атрибутам, чтобы разрешить смешивание атрибутов, специфичных для вида, или разрешить виду иметь специфическое преобразование атрибутов подклассами. Каждый вид должен документировать, какие атрибуты он распознает для целей отрисовки или макета, и всегда должен получать к ним доступ через AttributeSet возвращаемый этим методом.
Returns:
атрибуты, используемые при отрисовке

breakView

public View breakView(int axis, int offset, float pos, float len)
Пытается разбить этот вид по заданной оси. Это вызывается видами, которые пытаются выполнить форматирование своих дочерних элементов. Например, вид абзаца обычно пытается поместить свои дочерние элементы в строки, а виды, представляющие фрагменты текста, иногда могут быть разделены на более мелкие части.

Этот метод реализован для возврата самого вида, что представляет собой поведение по умолчанию для неразбиваемых видов. Если вид поддерживает разбиение, начальное смещение возвращаемого вида должно быть заданным смещением, а конечное смещение должно быть меньше или равно конечному смещению разбиваемого вида.

Parameters:
axis - может быть либо View.X_AXIS или View.Y_AXIS
offset - положение в модели документа, которое будет занимать фрагмент разбиения >= 0. Это будет начальное смещение возвращаемого фрагмента
pos - положение вдоль оси, которое будет занимать разбитый вид >= 0. Это может быть полезно для расчетов табуляции
len - указывает расстояние вдоль оси, где желательно потенциальное разбиение >= 0
Returns:
фрагмент вида, представляющий заданный диапазон, если вид может быть разбит. Если вид не поддерживает поведение разбиения, возвращается сам вид.
See Also:
  • ParagraphView

createFragment

public View createFragment(int p0, int p1)
Создает вид, представляющий часть элемента. Это потенциально полезно во время операций форматирования для получения измерений фрагментов вида. Если вид не поддерживает фрагментацию (по умолчанию), он должен вернуть сам себя.
Parameters:
p0 - начальное смещение >= 0. Это должно быть значение, большее или равное начальному смещению элемента и меньше конечного смещения элемента.
p1 - конечное смещение > p0. Это должно быть значение, меньшее или равное конечному смещению элемента и большее начального смещения элемента.
Returns:
фрагмент вида или сам вид, если вид не поддерживает фрагментацию
See Also:
  • LabelView

getBreakWeight

public int getBreakWeight(int axis, float pos, float len)
Определяет привлекательность возможности разрыва в этом виде. Это может быть использовано для определения того, какой вид является наиболее привлекательным для вызова breakView в процессе форматирования. Вид, представляющий текст, содержащий пробелы, может быть более привлекательным, чем вид без пробелов, например. Чем выше вес, тем более привлекательно разбиение. Значение, равное или меньшее BadBreakWeight, не должно рассматриваться для разбиения. Значение, большее или равное ForcedBreakWeight, должно быть разделено.

Этот метод реализован для предоставления поведения по умолчанию, возвращающего BadBreakWeight, если длина больше длины вида, в этом случае весь вид представляет фрагмент. Если вид не был написан для поддержки поведения разбиения, разбиение вида не привлекательно. Пример вида, который поддерживает разбиение, — LabelView. Пример вида, использующего вес разбиения, — ParagraphView.

Parameters:
axis - может быть либо View.X_AXIS или View.Y_AXIS
pos - потенциальное место начала разбитого вида >= 0. Это может быть полезно для расчета позиций табуляции
len - задает относительную длину от pos, где желательно потенциальное разбиение >= 0
Returns:
вес, который должен быть значением между ForcedBreakWeight и BadBreakWeight
See Also:
  • LabelView
  • ParagraphView
  • BadBreakWeight
  • GoodBreakWeight
  • ExcellentBreakWeight
  • ForcedBreakWeight

getResizeWeight

public int getResizeWeight(int axis)
Определяет возможность изменения размера представления по заданной оси. Значение 0 или меньше означает, что размер не изменяется.
Parameters:
axis - может быть либо View.X_AXIS или View.Y_AXIS
Returns:
вес

setSize

public void setSize(float width, float height)
Устанавливает размер представления. Это должно привести к перерасчёту размеров представления по заданной оси, если это необходимо.
Parameters:
width - ширина >= 0
height - высота >= 0

getContainer

public Container getContainer()
Получает контейнер, в котором размещено представление. Это полезно для таких задач, как планирование перерисовки, определение шрифта хостингового компонента и т.д. По умолчанию эта реализация перенаправляет запрос на родительское представление.
Returns:
контейнер, null если отсутствует

getViewFactory

public ViewFactory getViewFactory()
Получает реализацию ViewFactory, которая питает иерархию представлений. Обычно представлениям передается это в качестве аргумента при обновлениях от модели, когда они, скорее всего, будут нуждаться в фабрике, но этот метод позволяет получить его в другое время.
Returns:
фабрика, null если отсутствует

getToolTipText

public String getToolTipText(float x, float y, Shape allocation)
Возвращает текст подсказки в указанном месте. По умолчанию возвращает значение из дочернего представления, идентифицированного переданным местоположением.
Parameters:
x - координата x
y - координата y
allocation - текущее выделение представления.
Returns:
текст подсказки в указанном месте
Since:
1.4
See Also:
  • JTextComponent.getToolTipText(java.awt.event.MouseEvent)

getViewIndex

public int getViewIndex(float x, float y, Shape allocation)
Возвращает индекс дочернего представления, представляющего данную позицию в представлении. Этот метод перебирает все дочерние элементы, возвращая первый, область которого содержит x, y.
Parameters:
x - координата x
y - координата y
allocation - текущее выделение представления.
Returns:
индекс представления, представляющего данное местоположение, или -1, если такое представление отсутствует
Since:
1.4

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
Обновляет дочерние представления в ответ на уведомление о том, что модель изменилась, и есть запись изменения для элемента, за который отвечает это представление. Эта реализация предполагает, что дочерние представления напрямую отвечают за дочерние элементы элемента, который представляет это представление. ViewFactory используется для создания дочерних представлений для каждого элемента, указанного как добавленный в ElementChange, начиная с индекса, указанного в данном ElementChange. Количество дочерних представлений, представляющих удалённые элементы, удаляется.
Parameters:
ec - информация о изменении для элемента, за который отвечает это представление. Этот параметр не должен быть null если вызывается этот метод
e - информация о изменении из связанного документа
f - фабрика, используемая для построения дочерних представлений
Returns:
указывает, соответствуют ли дочерние представления дочерним элементам элемента, за который отвечает это представление. Некоторые представления создают дочерние элементы, которые представляют часть элемента, за который они отвечают, и должны возвращать false. Эта информация используется для определения, должны ли представления в диапазоне добавленных элементов быть перенаправлены или нет
Since:
1.3
See Also:
  • insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

forwardUpdate

protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
Передает заданное DocumentEvent дочерним представлениям, которые должны быть уведомлены об изменении модели. Если были изменения в элементе, за который отвечает это представление, это должно быть учтено при пересылке (т. е. новые дочерние представления не должны уведомляться).
Parameters:
ec - изменения в элементе, за который отвечает это представление (может быть null если изменений не было).
e - информация о изменении из связанного документа
a - текущее выделение представления
f - фабрика, используемая для перестроения, если у представления есть дочерние элементы
Since:
1.3
See Also:
  • insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

forwardUpdateToView

protected void forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
Пересылает DocumentEvent заданному дочернему представлению. Это просто отправляет сообщение представлению с вызовом insertUpdate, removeUpdate, или changedUpdate в зависимости от типа события. Это вызывается методом forwardUpdate для пересылки события дочерним элементам, которые нуждаются в этом.
Parameters:
v - дочернее представление, которому передаётся событие
e - информация о изменении из связанного документа
a - текущее выделение представления
f - фабрика, используемая для перестроения, если у представления есть дочерние элементы
Since:
1.3
See Also:
  • forwardUpdate(javax.swing.event.DocumentEvent.ElementChange, javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

updateLayout

protected void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
Обновляет макет в ответ на получение уведомления об изменении от модели. Эта реализация вызывает preferenceChanged для повторного планирования нового макета, если запись ElementChange не null.
Parameters:
ec - изменения в элементе, за который отвечает это представление (может быть null если изменений не было)
e - информация о изменении из связанного документа
a - текущее выделение представления
Since:
1.3
See Also:
  • insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

modelToView

@Deprecated public Shape modelToView(int pos, Shape a) throws BadLocationException
Устарело.
Обеспечивает отображение от координат модели документа к координатам представления, сопоставленного с ним. Эта реализация по умолчанию устанавливает смещение в Position.Bias.Forward, что ранее подразумевалось.
Parameters:
pos - позиция для преобразования >= 0
a - выделенная область для отрисовки
Returns:
возвращается область, содержащая заданную позицию
Throws:
BadLocationException - если заданная позиция не соответствует допустимому местоположению в связанном документе
See Also:
  • modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)

viewToModel

@Deprecated public int viewToModel(float x, float y, Shape a)
Устарело.
Обеспечивает отображение от координат представления к логическим координатам модели.
Parameters:
x - координата X >= 0
y - координата Y >= 0
a - выделенная область для отрисовки
Returns:
местоположение в модели, которое лучше всего представляет данную точку в представлении >= 0
See Also:
  • viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

© 1993, 2021, 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/17/docs/api/java.desktop/javax/swing/text/View.html

Spec-Zone.ru

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