Класс GapContent
- java.lang.Object
-
- javax.swing.text.GapContent
- Все реализованные интерфейсы:
-
Serializable,AbstractDocument.Content
public class GapContent extends Object implements AbstractDocument.Content, Serializable
Реализация интерфейса AbstractDocument.Content, использующая буфер с разрывом (gap), подобный тому, что используется в emacs. Основное хранилище — массив символов Юникода с разрывом в некотором месте. Разрыв перемещается в место изменений, чтобы использовать преимущества того, что большинство изменений происходят в одном месте. Изменения, происходящие на границе разрыва, обычно недороги, а перемещение разрыва, как правило, обходится дешевле, чем прямое перемещение содержимого массива для адаптации к изменению.
Отслеживание позиций изменений также, как правило, не требует больших затрат. Реализации позиции (метки) хранят индекс массива и могут легко рассчитать последовательную позицию из текущего расположения разрыва. Изменения требуют обновления только меток между старой и новой границами разрыва при перемещении разрыва, поэтому, как правило, обновление меток довольно недорого. Метки хранятся в отсортированном виде, что позволяет быстро их находить с помощью бинарного поиска. Это увеличивает стоимость добавления метки и уменьшает стоимость поддержания метки в актуальном состоянии.
- См. также:
- Сериализованная форма
Конструкторы
| Конструктор | Описание |
|---|---|
GapContent() | Создаёт новый объект GapContent. |
GapContent(int initialLength) | Создаёт новый объект GapContent с заданным начальным размером. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object | allocateArray(int len) | Выделяет массив для хранения элементов соответствующего типа (определяется подклассом). |
Position | createPosition(int offset) | Создаёт позицию внутри содержимого, которая будет отслеживать изменения при изменении содержимого. |
protected Object | getArray() | Доступ к массиву. |
protected int | getArrayLength() | Получить длину выделенного массива. |
void | getChars(int where,
int len,
Segment chars) | Извлекает часть содержимого. |
protected int | getGapEnd() | Доступ к концу разрыва. |
protected int | getGapStart() | Доступ к началу разрыва. |
protected Vector | getPositionsInRange(Vector v,
int offset,
int length) | Возвращает вектор, содержащий экземпляры UndoPosRef для позиций в диапазоне |
String | getString(int where,
int len) | Извлекает часть содержимого. |
UndoableEdit | insertString(int where,
String str) | Вставляет строку в содержимое. |
int | length() | Возвращает длину содержимого. |
UndoableEdit | remove(int where,
int nitems) | Удаляет часть содержимого. |
protected void | replace(int position,
int rmSize,
Object addItems,
int addSize) | Заменяет заданную логическую позицию в хранилище заданными новыми элементами. |
protected void | resetMarksAtZero() | Сбрасывает все метки, у которых смещение равно 0, так, чтобы их индекс также был нулевым. |
protected void | shiftEnd(int newSize) | Увеличивает размер разрыва, перемещая необходимые данные и обновляя соответствующие метки. |
protected void | shiftGap(int newGapStart) | Перемещает начало разрыва в новое местоположение без изменения размера разрыва. |
protected void | shiftGapEndUp(int newGapEnd) | Изменяет конец разрыва вверх. |
protected void | shiftGapStartDown(int newGapStart) | Изменяет конец разрыва вниз. |
protected void | updateUndoPositions(Vector positions,
int offset,
int length) | Сбрасывает местоположение для всех экземпляров UndoPosRef в |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
GapContent
public GapContent()
Создаёт новый объект GapContent. Начальный размер по умолчанию равен 10.
GapContent
public GapContent(int initialLength)
Создаёт новый объект GapContent с указанным начальным размером. Начальный размер не может быть меньше 2, чтобы обеспечить место для подразумеваемого разрыва и промежутка.
- Параметры:
-
initialLength- начальный размер
Методы
allocateArray
protected Object allocateArray(int len)
Выделяет массив для хранения элементов соответствующего типа (который определяется подклассом).
getArrayLength
protected int getArrayLength()
Получить длину выделенного массива.
length
public int length()
Возвращает длину содержимого.
- Определено в:
-
lengthв интерфейсеAbstractDocument.Content - Возвращает:
- длину >= 1
- См. также:
AbstractDocument.Content.length()
insertString
public UndoableEdit insertString(int where,
String str)
throws BadLocationException Вставляет строку в содержимое.
- Определено в:
-
insertStringв интерфейсеAbstractDocument.Content - Параметры:
-
where- начальная позиция >= 0, < length() -
str- непустая строка для вставки - Возвращает:
- объект UndoableEdit для отмены
- Исключения:
-
BadLocationException- если указанная позиция недопустима - См. также:
AbstractDocument.Content.insertString(int, java.lang.String)
remove
public UndoableEdit remove(int where,
int nitems)
throws BadLocationException Удаляет часть содержимого.
- Определено в:
-
removeв интерфейсеAbstractDocument.Content - Параметры:
-
where- начальная позиция >= 0, где + nitems < length() -
nitems- количество символов для удаления >= 0 - Возвращает:
- объект UndoableEdit для отмены
- Исключения:
-
BadLocationException- если указанная позиция недопустима - См. также:
AbstractDocument.Content.remove(int, int)
getString
public String getString(int where,
int len)
throws BadLocationException Извлекает часть содержимого.
- Определено в:
-
getStringв интерфейсеAbstractDocument.Content - Параметры:
-
where- начальная позиция >= 0 -
len- длина для извлечения >= 0 - Возвращает:
- строка, представляющая содержимое
- Исключения:
-
BadLocationException- если указанная позиция недопустима - См. также:
AbstractDocument.Content.getString(int, int)
getChars
public void getChars(int where,
int len,
Segment chars)
throws BadLocationException Извлекает часть содержимого. Если необходимое содержимое охватывает промежуток, мы копируем содержимое. Если необходимое содержимое не охватывает промежуток, возвращается фактическое хранилище, чтобы избежать копирования, так как оно непрерывно.
- Определено в:
-
getCharsв интерфейсеAbstractDocument.Content - Параметры:
-
where- начальная позиция >= 0, где + len <= length() -
len- количество символов для извлечения >= 0 -
chars- объект Segment для возврата символов - Исключения:
-
BadLocationException- если указанная позиция недопустима - См. также:
AbstractDocument.Content.getChars(int, int, javax.swing.text.Segment)
createPosition
public Position createPosition(int offset)
throws BadLocationException Создаёт позицию в содержимом, которая будет отслеживать изменения по мере изменения содержимого.
- Определено в:
-
createPositionв интерфейсеAbstractDocument.Content - Параметры:
-
offset- смещение для отслеживания >= 0 - Возвращает:
- позицию
- Исключения:
-
BadLocationException- если указанная позиция недопустима
shiftEnd
protected void shiftEnd(int newSize)
Увеличить промежуток, переместив необходимые данные и обновив соответствующие метки.
shiftGap
protected void shiftGap(int newGapStart)
Переместить начало промежутка в новое местоположение, не изменяя размер промежутка. Это перемещает данные в массиве и обновляет метки соответственно.
resetMarksAtZero
protected void resetMarksAtZero()
Сбрасывает все метки, у которых смещение равно 0, чтобы их индекс также был равен нулю.
shiftGapStartDown
protected void shiftGapStartDown(int newGapStart)
Настроить конец промежутка вниз. Это не перемещает данные, но обновляет любые метки, затронутые изменением границы. Все метки от старого начала промежутка до нового начала промежутка сжимаются до конца промежутка (их местоположение было удалено).
shiftGapEndUp
protected void shiftGapEndUp(int newGapEnd)
Настроить конец промежутка вверх. Это не перемещает данные, но обновляет любые метки, затронутые изменением границы. Все метки от старого конца промежутка до нового конца промежутка сжимаются до конца промежутка (их местоположение было удалено).
getPositionsInRange
protected Vector getPositionsInRange(Vector v,
int offset,
int length) Возвращает Vector, содержащий экземпляры UndoPosRef для позиций в диапазоне offset до offset + length. Если v не равно null, соответствующие позиции помещаются в него. Возвращается вектор с результирующими позициями.
- Параметры:
-
v- используемый Vector, если null, создаётся новый -
offset- начальное смещение >= 0 -
length- длина >= 0 - Возвращает:
- множество экземпляров
updateUndoPositions
protected void updateUndoPositions(Vector positions,
int offset,
int length) Сбрасывает положение для всех экземпляров UndoPosRef в positions.
Этот метод предназначен для внутреннего использования и, как правило, не представляет интереса для подклассов.
- Параметры:
-
positions- экземпляры UndoPosRef для сброса -
offset- место вставки строки -
length- длина вставленной строки
getArray
protected final Object getArray()
Доступ к массиву. Фактический тип массива известен только подклассу.
getGapStart
protected final int getGapStart()
Доступ к началу промежутка.
getGapEnd
protected final int getGapEnd()
Доступ к концу промежутка.
replace
protected void replace(int position,
int rmSize,
Object addItems,
int addSize) Заменяет заданную логическую позицию в хранилище заданными новыми элементами. Это переместит промежуток в область, которая изменяется, если промежуток не расположен в месте изменения.
- Параметры:
-
position- местоположение для замены. Это не местоположение в базовом массиве хранения, а местоположение в непрерывном пространстве, которое моделируется. -
rmSize- количество элементов для удаления -
addItems- новые элементы для размещения в хранилище.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/text/GapContent.html