Spec-Zone.ru › OpenJDK 24

Класс GapContent

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

Отслеживание изменений позиций также обычно недорогие. Реализации 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)
Возвращает вектор, содержащий экземпляры 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.

Методы, объявленные в классе 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)
Выделяет массив для хранения элементов соответствующего типа (который определяется подклассом).
Параметры:
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, 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)
Увеличить размер разрыва, перемещая необходимые данные и обновляя соответствующие метки.
Параметры:
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)
Возвращает вектор, содержащий экземпляры UndoPosRef для позиций в диапазоне от offset до offset + length. Если v не равно null, соответствующие позиции помещаются туда. Возвращается вектор с полученными позициями.
Параметры:
v - используемый вектор, создаётся новый при 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 - количество добавляемых элементов

© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/text/GapContent.html

Spec-Zone.ru

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