Spec-Zone.ru › OpenJDK 21

Класс SizeSequence

java.lang.Object
javax.swing.SizeSequence
public class SizeSequence extends Object
Объект, эффективно поддерживающий упорядоченный список размеров и соответствующих позиций. Один из вариантов применения этого объекта — в компоненте, отображающем несколько строк разной высоты. В этом случае один объект SizeSequence может использоваться для отслеживания высот и позиций Y всех строк.

Другой пример — многоколоночный компонент, например, JTable, в котором размеры столбцов не равны. Объект JTable может использовать один объект SizeSequence для хранения ширины и позиций X всех столбцов. Объект JTable может затем использовать объект SizeSequence для поиска столбца, соответствующего определённой позиции. Объект JTable может обновлять объект SizeSequence всякий раз, когда изменяется размер одного или нескольких столбцов.

На рисунке показаны взаимосвязи между данными о размерах и позициях для многоколоночного компонента.

The first item begins at position 0, the second at the position equal
 to the size of the previous item, and so on.

На рисунке первый индекс (0) соответствует первому столбцу, второй индекс (1) — второму столбцу и так далее. Позиция первого столбца начинается с 0, и столбец занимает size0 пикселей, где size0 — значение, возвращаемое getSize(0). Таким образом, первый столбец заканчивается в позиции size0 - 1. Второй столбец начинается в позиции size0 и занимает size1 (getSize(1)) пикселей.

Обратите внимание, что объект SizeSequence просто представляет интервалы вдоль оси. В наших примерах интервалы представляют высоту или ширину в пикселях. Однако любая другая единица измерения (например, время в днях) может быть столь же допустимой.

Примечания по реализации

Обычно при хранении размера и положения записей можно выбирать между хранением размеров или положений. Две основные операции, необходимые при отрисовке, это: getIndex(position) и setSize(index, size). Какой бы внутренний формат не был выбран, одна из этих операций является дорогостоящей, когда количество записей становится большим. Если хранятся размеры, поиск индекса записи, охватывающей определённую позицию, является линейным относительно количества записей. Если хранятся позиции, для изменения размера записи в определённом индексе требуется обновление позиций затронутых записей, что также является линейной операцией.

Как и в приведенных выше методах, этот класс внутренне хранит массив из N целых чисел, но использует гибридное кодирование, которое находится на полпути между подходами, основанными на размерах и позициях. Результатом является структура данных, которая занимает одинаковое пространство для хранения информации, но большинство операций может выполняться за время Log(N) вместо O(N), где N — количество записей в списке.

Две операции, которые остаются O(N) относительно количества записей, — это методы insertEntries и removeEntries, оба из которых реализуются путём преобразования внутреннего массива в набор целых размеров, копирования его в новый массив, а затем преобразования гибридного представления на месте.

Since:
1.3

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

Конструктор Описание
SizeSequence()
Создаёт новый объект SizeSequence, который не содержит записей.
SizeSequence(int numEntries)
Создаёт новый объект SizeSequence, который содержит указанное количество записей, все инициализированные размером 0.
SizeSequence(int[] sizes)
Создаёт новый объект SizeSequence, который содержит указанные размеры.
SizeSequence(int numEntries, int value)
Создаёт новый объект SizeSequence, который содержит указанное количество записей, все инициализированные размером value.

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

Модификатор и тип Метод Описание
int getIndex(int position)
Возвращает индекс записи, соответствующей заданной позиции.
int getPosition(int index)
Возвращает начальную позицию для указанной записи.
int getSize(int index)
Возвращает размер указанной записи.
int[] getSizes()
Возвращает размер всех записей.
void insertEntries(int start, int length, int value)
Добавляет непрерывную группу записей в этот объект SizeSequence.
void removeEntries(int start, int length)
Удаляет непрерывную группу записей из этого объекта SizeSequence.
void setSize(int index, int size)
Устанавливает размер указанной записи.
void setSizes(int[] sizes)
Сбрасывает этот объект SizeSequence используя данные в аргументе sizes.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

SizeSequence

public SizeSequence()
Создаёт новый объект SizeSequence, не содержащий записей. Для добавления записей можно использовать insertEntries или setSizes.
См. также:
  • insertEntries(int, int, int)
  • setSizes(int[])

SizeSequence

public SizeSequence(int numEntries)
Создаёт новый объект SizeSequence, содержащий указанное количество записей, все с размером, инициализированным в 0.
Параметры:
numEntries - количество размеров для отслеживания
Исключения:
NegativeArraySizeException - если numEntries < 0

SizeSequence

public SizeSequence(int numEntries, int value)
Создаёт новый объект SizeSequence, содержащий указанное количество записей, все с размером, инициализированным в value.
Параметры:
numEntries - количество размеров для отслеживания
value - начальное значение каждого размера

SizeSequence

public SizeSequence(int[] sizes)
Создаёт новый объект SizeSequence, содержащий указанные размеры.
Параметры:
sizes - массив размеров, которые должны храниться в SizeSequence

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

setSizes

public void setSizes(int[] sizes)
Перезапускает этот объект SizeSequence, используя данные в аргументе sizes. Этот метод переинициализирует объект, так что он содержит столько записей, сколько элементов в массиве sizes. Размер каждой записи инициализируется значением соответствующего элемента в массиве sizes.
Параметры:
sizes - массив размеров, которые должны храниться в этом объекте SizeSequence

getSizes

public int[] getSizes()
Возвращает размеры всех записей.
Возвращает:
новый массив, содержащий размеры в этом объекте

getPosition

public int getPosition(int index)
Возвращает начальную позицию для указанной записи. Например, getPosition(0) возвращает 0, getPosition(1) равно getSize(0), getPosition(2) равно getSize(0) + getSize(1), и так далее.

Обратите внимание, что если index больше, чем length, возвращаемое значение может быть бессмысленным.

Параметры:
index - индекс записи, позиция которой требуется
Возвращает:
начальную позицию указанной записи

getIndex

public int getIndex(int position)
Возвращает индекс записи, соответствующей указанной позиции. Например, getIndex(0) равен 0, так как первая запись всегда начинается с позиции 0.
Параметры:
position - позиция записи
Возвращает:
индекс записи, занимающей указанную позицию

getSize

public int getSize(int index)
Возвращает размер указанной записи. Если index находится вне диапазона (0 <= index < getSizes().length), поведение не определено.
Параметры:
index - индекс, соответствующий записи
Возвращает:
размер записи

setSize

public void setSize(int index, int size)
Устанавливает размер указанной записи. Обратите внимание, что если значение index не попадает в диапазон: (0 <= index < getSizes().length), поведение не определено.
Параметры:
index - индекс, соответствующий записи
size - размер записи

insertEntries

public void insertEntries(int start, int length, int value)
Добавляет непрерывную группу записей в этот объект SizeSequence. Обратите внимание, что значения start и length должны удовлетворять следующим условиям: (0 <= start < getSizes().length) AND (length >= 0). Если эти условия не выполняются, поведение не определено, и может быть выброшено исключение.
Параметры:
start - индекс, который будет присвоен первой записи в группе
length - количество записей в группе
value - размер, который будет присвоен каждой новой записи
Исключения:
ArrayIndexOutOfBoundsException - если параметры находятся вне диапазона: (0 <= start < (getSizes().length)) AND (length >= 0)

removeEntries

public void removeEntries(int start, int length)
Удаляет непрерывную группу записей из этого объекта SizeSequence. Обратите внимание, что значения start и length должны удовлетворять следующим условиям: (0 <= start < getSizes().length) AND (length >= 0). Если эти условия не выполняются, поведение не определено, и может быть выброшено исключение.
Параметры:
start - индекс первой удаляемой записи
length - количество удаляемых записей

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

Spec-Zone.ru

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