Spec-Zone.ru › OpenJDK 25

Класс 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, устанавливая их в 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

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

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 — строка для вставки, не равная null
Возвращает:
объект 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, устанавливая их в 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/text/GapContent.html

Spec-Zone.ru

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