Spec-Zone.ru › OpenJDK 27

Класс GapContent

java.lang.Object
javax.swing.text.GapContent
Все реализуемые интерфейсы:
Serializable, AbstractDocument.Content
public class GapContent extends Object implements AbstractDocument.Content, Serializable
Реализация интерфейса AbstractDocument.Content с использованием буфера с промежутком, похожего на тот, который применяется в emacs. Базовое хранилище представляет собой массив символов Unicode с промежутком в некотором месте. Промежуток перемещается к месту изменения, чтобы воспользоваться типичным поведением, при котором большинство изменений происходит в одном и том же месте. Изменения на границе промежутка обычно обходятся недорого, а перемещение промежутка, как правило, дешевле, чем непосредственное перемещение содержимого массива для внесения изменений.

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

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

Конструктор Описание
GapContent()
Создаёт новый объект GapContent.
GapContent(int initialLength)
Создаёт новый объект GapContent с заданным начальным размером.

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

Модификатор и тип Метод Описание
protected Object allocateArray(int len)
Выделяет массив для хранения элементов соответствующего типа (определяемого подклассом).
Position createPosition(int offset)
Создаёт позицию в содержимом, которая будет отслеживать изменения при модификации содержимого.
protected final Object getArray()
Доступ к массиву.
protected int getArrayLength()
Возвращает длину выделенного массива.
void getChars(int where, int len, Segment chars)
Извлекает часть содержимого.
protected final int getGapEnd()
Доступ к концу промежутка.
protected final int getGapStart()
Доступ к началу промежутка.
protected Vector getPositionsInRange(Vector v, int offset, int length)
Возвращает Vector, содержащий экземпляры UndoPosRef для позиций в диапазоне от offset до offset + length.
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 в positions.

Методы, унаследованные от класса Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удалён в будущей версии.
Метод финализации устарел и может быть удалён в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения указанного промежутка времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения указанного промежутка времени.

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

GapContent

public GapContent()
Создаёт новый объект GapContent. Начальный размер по умолчанию равен 10.

GapContent

public GapContent(int initialLength)
Создаёт новый объект GapContent с заданным начальным размером. Начальный размер не может быть меньше 2, чтобы оставить место для подразумеваемого разделителя и промежутка.
Параметры:
initialLength — начальный размер

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

allocateArray

protected Object allocateArray(int len)
Выделяет массив для хранения элементов соответствующего типа (определяемого подклассом).
Параметры:
len — длина массива
Возвращает:
массив Java некоторого типа

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, 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, Segment)

createPosition

public Position createPosition(int offset) throws BadLocationException
Создаёт позицию в содержимом, которая будет отслеживать изменения при модификации содержимого.
Определён в:
createPosition в интерфейсе AbstractDocument.Content
Параметры:
offset — отслеживаемое смещение >= 0
Возвращает:
позиция
Вызывает исключение:
BadLocationException — если указана недопустимая позиция

shiftEnd

protected void shiftEnd(int newSize)
Увеличивает размер промежутка, перемещая необходимые данные и обновляя соответствующие отметки.
Параметры:
newSize — новая ёмкость

shiftGap

protected void shiftGap(int newGapStart)
Перемещает начало промежутка в новое место, не меняя размер промежутка. Перемещает данные в массиве и соответствующим образом обновляет отметки.
Параметры:
newGapStart — новое начало промежутка

resetMarksAtZero

protected void resetMarksAtZero()
Сбрасывает индекс всех отметок со смещением 0 на ноль.

shiftGapStartDown

protected void shiftGapStartDown(int newGapStart)
Сдвигает конец промежутка вниз. Данные при этом не перемещаются, но обновляются отметки, на которые влияет изменение границы. Все отметки от старого начала промежутка до нового сдвигаются к концу промежутка (их расположение удалено).
Параметры:
newGapStart — новое начало промежутка

shiftGapEndUp

protected void shiftGapEndUp(int newGapEnd)
Сдвигает конец промежутка вверх. Данные при этом не перемещаются, но обновляются отметки, на которые влияет изменение границы. Все отметки от старого конца промежутка до нового сдвигаются к концу промежутка (их расположение удалено).
Параметры:
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()
Доступ к массиву. Фактический тип массива известен только подклассу.
Возвращает:
массив Java некоторого типа

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 — новые элементы для размещения в хранилище.
addSize — количество добавляемых элементов

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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