Spec-Zone.ru › OpenJDK 21

Вид класса

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

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

Ось Y

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

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

View

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

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

getParent

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

isVisible

public boolean isVisible()
Возвращает булево значение, указывающее, отображается ли представление. По умолчанию все представления отображаются.
Возвращает:
всегда возвращает 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

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:
  • removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • changedUpdate(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:
  • insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • changedUpdate(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:
  • insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
  • removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

getDocument

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

getStartOffset

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

getEndOffset

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

getElement

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

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:
  • viewToModel(float, float, 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:
  • modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)

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

Spec-Zone.ru

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