Spec-Zone.ru › OpenJDK 24

Класс SizeSequence

java.lang.Object
javax.swing.SizeSequence
public class SizeSequence extends Object
Объект типа SizeSequence эффективно поддерживает упорядоченный список размеров и соответствующих позиций. Одна из ситуаций, в которой SizeSequence может быть уместным, — это компонент, отображающий несколько строк разной высоты. В этом случае один объект 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, 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/SizeSequence.html

Spec-Zone.ru

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