Spec-Zone.ru › OpenJDK 17

Класс SizeSequence

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

Другой пример — многоколоночный компонент, такой как JTable, в котором размеры столбцов не равны. Объект SizeSequence может быть использован для хранения ширины и позиций X всех столбцов. Затем компонент может использовать объект SizeSequence для нахождения столбца, соответствующего определённой позиции. Компонент может обновлять объект 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, используя данные в аргументе size.

Методы, унаследованные от класса 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, 2021, 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/17/docs/api/java.desktop/javax/swing/SizeSequence.html

Spec-Zone.ru

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