Spec-Zone.ru › OpenJDK 25

Класс 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 — число элементов в списке.

Две операции, время выполнения которых по-прежнему линейно зависит от числа элементов, — это методы insertEntries и removeEntries. Оба метода преобразуют внутренний массив в набор целочисленных размеров, копируют его в новый массив, а затем заново формируют гибридное представление на месте.

Начиная с:
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.

Методы, объявленные в классе 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 — количество удаляемых элементов

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/SizeSequence.html

Spec-Zone.ru

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