Spec-Zone.ru › OpenJDK 24

Класс BasicListUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.ListUI
javax.swing.plaf.basic.BasicListUI
Прямые известные подклассы:
SynthListUI
public class BasicListUI extends ListUI
Расширяемая реализация ListUI.

Экземпляры ListUI нельзя использовать совместно для нескольких списков.

Краткое описание вложенных классов

Модификатор и тип Класс Описание
class  BasicListUI.FocusHandler
Этот класс следует рассматривать как "защищённый" вложенный класс.
class  BasicListUI.ListDataHandler
ListDataListener, добавляемый к модели JLists в installUI time, а также при изменении свойства JList.model.
class  BasicListUI.ListSelectionHandler
ListSelectionListener, добавляемый к модели выбора JList во время установки UI и при каждом изменении свойства JList.selectionModel.
class  BasicListUI.MouseInputHandler
Обработка ввода мыши и фокуса для JList.
class  BasicListUI.PropertyChangeHandler
PropertyChangeListener, добавляемый к JList во время установки UI.

Краткое описание полей

Модификатор и тип Поле Описание
protected int cellHeight
Высота ячейки.
protected int[] cellHeights
Массив высот ячеек
protected static final int cellRendererChanged
Флаг, связанный с изменением свойств рендерера ячеек.
protected int cellWidth
Ширина ячейки.
protected static final int fixedCellHeightChanged
Флаг, связанный с изменением фиксированной высоты ячейки.
protected static final int fixedCellWidthChanged
Флаг, связанный с изменением фиксированной ширины ячейки.
protected FocusListener focusListener
FocusListener, привязанный к JList.
protected static final int fontChanged
Флаг, связанный с изменением шрифта.
protected JList<Object> list
Экземпляр JList.
protected ListDataListener listDataListener
ListDataListener, привязанный к JList.
protected ListSelectionListener listSelectionListener
ListSelectionListener, привязанный к JList.
protected static final int modelChanged
Флаг, связанный с изменением модели.
protected MouseInputListener mouseInputListener
MouseInputListener, привязанный к JList.
protected PropertyChangeListener propertyChangeListener
PropertyChangeListener, привязанный к JList.
protected static final int prototypeCellValueChanged
Флаг, связанный с изменением значения прототипа ячейки.
protected CellRendererPane rendererPane
Экземпляр CellRendererPane.
protected static final int selectionModelChanged
Флаг, связанный с изменением модели выбора.
protected int updateLayoutStateNeeded
Значение, представляющее изменения в модели JList.

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

Конструктор Описание
BasicListUI()
Конструктор BasicListUI.

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

Modifier and Type Method Description
protected int convertRowToY(int row)
Возвращает относительную координату Y начала указанной строки или -1, если строка неверна.
protected int convertYToRow(int y0)
Преобразует JList относительную координату в строку, которая её содержит, на основе текущего макета.
protected FocusListener createFocusListener()
Возвращает экземпляр FocusListener.
protected ListDataListener createListDataListener()
Создаёт экземпляр ListDataListener, который добавляется к JLists моделью по мере необходимости.
protected ListSelectionListener createListSelectionListener()
Создаёт экземпляр ListSelectionHandler, который добавляется к JLists моделью выбора по мере необходимости.
protected MouseInputListener createMouseInputListener()
Создаёт делегата, реализующего MouseInputListener.
protected PropertyChangeListener createPropertyChangeListener()
Создаёт экземпляр PropertyChangeHandler, который добавляется к JList по мере необходимости installUI().
static ComponentUI createUI(JComponent list)
Возвращает новый экземпляр BasicListUI.
int getBaseline(JComponent c, int width, int height)
Возвращает базовую линию.
Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
Возвращает перечисление, указывающее, как изменяется базовая линия компонента при изменении размера.
Rectangle getCellBounds(JList<?> list, int index1, int index2)
Возвращает прямоугольник ограничивающей рамки, в системе координат данного списка, для диапазона ячеек, указанных двумя индексами.
Dimension getPreferredSize(JComponent c)
Предпочтительный размер списка зависит от ориентации макета.
protected int getRowHeight(int row)
Возвращает высоту указанной строки на основе текущего макета.
Point indexToLocation(JList<?> list, int index)
Возвращает начало указанного элемента в заданной JList, в системе координат списка.
protected void installDefaults()
Инициализирует свойства списка, такие как шрифт, передний и задний фон, и добавляет CellRendererPane.
protected void installKeyboardActions()
Регистрирует привязки клавиатуры к JList, с которым связан BasicListUI.
protected void installListeners()
Создаёт и устанавливает слушатели для JList, его модели и модели выбора.
void installUI(JComponent c)
Инициализирует this.list, вызвав installDefaults(), installListeners() и installKeyboardActions() в указанном порядке.
int locationToIndex(JList<?> list, Point location)
Возвращает индекс ячейки в указанном JList, наиболее близкий к заданному расположению в системе координат списка.
protected void maybeUpdateLayoutState()
Если updateLayoutStateNeeded не равно нулю, вызывается updateLayoutState() и сбрасывается updateLayoutStateNeeded.
void paint(Graphics g, JComponent c)
Отображает строки, которые пересекаются с областью обрезки объекта Graphics.
protected void paintCell(Graphics g, int row, Rectangle rowBounds, ListCellRenderer<Object> cellRenderer, ListModel<Object> dataModel, ListSelectionModel selModel, int leadIndex)
Отображает одну ячейку списка: вычисляет соответствующее состояние, получает компонент-рендерер ячейки ("штамп") и затем использует CellRendererPane для его отображения.
protected void selectNextIndex()
Выделяет предыдущую строку и принудительно делает её видимой.
protected void selectPreviousIndex()
Выделяет предыдущую строку и принудительно делает её видимой.
protected void uninstallDefaults()
Устанавливает свойства списка, которые не были явно переопределены, в значение по умолчанию null.
protected void uninstallKeyboardActions()
Отменяет регистрацию действий клавиатуры, установленных из installKeyboardActions.
protected void uninstallListeners()
Удаляет слушателей из JList, его модели и модели выбора.
void uninstallUI(JComponent c)
Деинициализирует this.list, вызвав uninstallListeners(), uninstallKeyboardActions() и uninstallDefaults() в указанном порядке.
protected void updateLayoutState()
Пересчитывает значение cellHeight или cellHeights, основываясь на cellWidth, текущем шрифте и текущих значениях fixedCellWidth, fixedCellHeight и prototypeCellValue.

Методы, объявленные в классе javax.swing.plaf.ComponentUI

contains, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getMinimumSize, update

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

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

Подробное описание полей

list

protected JList<Object> list
Экземпляр JList.

rendererPane

protected CellRendererPane rendererPane
Экземпляр CellRendererPane.

focusListener

protected FocusListener focusListener
FocusListener, привязанный к JList.

mouseInputListener

protected MouseInputListener mouseInputListener
MouseInputListener, привязанный к JList.

listSelectionListener

protected ListSelectionListener listSelectionListener
ListSelectionListener, привязанный к JList.

listDataListener

protected ListDataListener listDataListener
ListDataListener, привязанный к JList.

propertyChangeListener

protected PropertyChangeListener propertyChangeListener
PropertyChangeListener, привязанный к JList.

cellHeights

protected int[] cellHeights
Массив высот ячеек

cellHeight

protected int cellHeight
Высота ячейки.

cellWidth

protected int cellWidth
Ширина ячейки.

updateLayoutStateNeeded

protected int updateLayoutStateNeeded
Значение, представляющее изменения в модели JList.

modelChanged

protected static final int modelChanged
Флаг, связанный с изменением модели.
См. также:
  • Значения константных полей

selectionModelChanged

protected static final int selectionModelChanged
Флаг, связанный с изменением модели выделения.
См. также:
  • Значения константных полей

fontChanged

protected static final int fontChanged
Флаг, связанный с изменением шрифта.
См. также:
  • Значения константных полей

fixedCellWidthChanged

protected static final int fixedCellWidthChanged
Флаг, связанный с изменением фиксированной ширины ячейки.
См. также:
  • Значения константных полей

fixedCellHeightChanged

protected static final int fixedCellHeightChanged
Флаг, связанный с изменением фиксированной высоты ячейки.
См. также:
  • Значения константных полей

prototypeCellValueChanged

protected static final int prototypeCellValueChanged
Флаг, связанный с изменением значения ячейки-прототипа.
См. также:
  • Значения константных полей

cellRendererChanged

protected static final int cellRendererChanged
Флаг, связанный с изменением рендерера ячейки.
См. также:
  • Значения константных полей

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

BasicListUI

public BasicListUI()
Создает BasicListUI.

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

paintCell

protected void paintCell(Graphics g, int row, Rectangle rowBounds, ListCellRenderer<Object> cellRenderer, ListModel<Object> dataModel, ListSelectionModel selModel, int leadIndex)
Отрисовывает одну ячейку списка: вычисляет соответствующее состояние, получает компонент рендерера ячейки, и затем использует его для отрисовки. Подклассы могут переопределить этот метод вместо paint().
Параметры:
g - экземпляр Graphics
row - строка
rowBounds - область для отрисовки
cellRenderer - рендерер списка
dataModel - модель списка
selModel - модель выделения
leadIndex - индекс ведущего элемента
См. также:
  • paint(java.awt.Graphics, javax.swing.JComponent)

paint

public void paint(Graphics g, JComponent c)
Отрисовывает строки, пересекающие область обрезки графического контекста. Этот метод вызывает paintCell по мере необходимости. Подклассы могут переопределить эти методы.
Переопределяет:
paint в классе ComponentUI
Параметры:
g - контекст для отрисовки
c - компонент, который отрисовывается
См. также:
  • paintCell(java.awt.Graphics, int, java.awt.Rectangle, javax.swing.ListCellRenderer<java.lang.Object>, javax.swing.ListModel<java.lang.Object>, javax.swing.ListSelectionModel, int)

getBaseline

public int getBaseline(JComponent c, int width, int height)
Возвращает базовую линию.
Переопределяет:
getBaseline в классе ComponentUI
Параметры:
c - компонент, для которого запрашивается базовая линия
width - высота для получения базовой линии
Возвращает:
базовую линию или значение < 0, указывающее, что нет разумной базовой линии
Исключения:
NullPointerException - если c является null
IllegalArgumentException - если ширина или высота < 0
С:
1.6
См. также:
  • JComponent.getBaseline(int, int)

getBaselineResizeBehavior

public Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
Возвращает перечисление, указывающее, как изменяется базовая линия компонента при изменении размера.
Переопределяет:
getBaselineResizeBehavior в классе ComponentUI
Параметры:
c - компонент, для которого запрашивается поведение изменения базовой линии
Возвращает:
перечисление, указывающее, как изменяется базовая линия при изменении размера компонента
Исключения:
NullPointerException - если c является null
С:
1.6
См. также:
  • JComponent.getBaseline(int, int)

getPreferredSize

public Dimension getPreferredSize(JComponent c)
Предпочтительный размер списка зависит от ориентации макета.
Описание предпочтительного размера для каждой ориентации макета
Ориентация макета Предпочтительный размер
JList.VERTICAL Предпочтительный размер списка — это общая высота строк и максимальная ширина ячеек. Если задан JList.fixedCellHeight, то общая высота строк составляет (отступы ячейки по вертикали + fixedCellHeight) * model.getSize(), где отступы по вертикали — это пространство, которое мы выделяем для отображения желтой рамки фокуса. Аналогично, если задан fixedCellWidth, мы используем его значение.
JList.VERTICAL_WRAP Если количество видимых строк больше нуля, предпочтительная высота равна максимальной высоте ячейки * количество видимых строк. Если количество видимых строк меньше или равно 0, предпочтительная высота равна либо текущей высоте списка, либо максимальной высоте ячейки, в зависимости от того, какая больше. Предпочтительная ширина равна максимальной ширине ячейки * количеству необходимых столбцов. Количество столбцов определяется как list.height / максимальная высота ячейки. Максимальная высота ячейки либо задана fixed cell height, либо определяется итерацией по всем ячейкам для нахождения максимальной высоты с помощью ListCellRenderer.
JList.HORIZONTAL_WRAP Если количество видимых строк больше нуля, предпочтительная высота равна максимальной высоте ячейки * скорректированному количеству строк. Где visibleRowCount используется для определения количества столбцов. Поскольку это макет по горизонтали, количество строк затем определяется по количеству столбцов. Например, предположим, что у вас есть модель с 10 элементами, а visible row count — 8. Количество необходимых столбцов для отображения — 2, но вам больше не нужны 8 строк для отображения, вам нужно только 5, следовательно, скорректированное количество строк (adjustedRowCount) — 5.

Если количество видимых строк меньше или равно 0, предпочтительная высота определяется количеством столбцов, которые могут поместиться по ширине JList (ширина / максимальная ширина ячейки), при условии как минимум одного столбца. Тогда предпочтительная высота станет model size / количество столбцов * максимальная высота ячейки. Максимальная высота ячейки либо задана fixed cell height, либо определяется итерацией по всем ячейкам для нахождения максимальной высоты с помощью ListCellRenderer.

Выше указаны исходные предпочтительные ширина и высота. Результирующая предпочтительная ширина — это вышеуказанная ширина + insets.left + insets.right, а результирующая предпочтительная высота — это вышеуказанная высота + insets.top + insets.bottom. Где Insets определяются из list.getInsets().
Overrides:
getPreferredSize в классе ComponentUI
Parameters:
c — компонент JList.
Returns:
Общий размер списка.
See Also:
  • JComponent.getPreferredSize()
  • LayoutManager.preferredLayoutSize(java.awt.Container)

selectPreviousIndex

protected void selectPreviousIndex()
Выделяет предыдущую строку и делает её видимой.
See Also:
  • JList.ensureIndexIsVisible(int)

selectNextIndex

protected void selectNextIndex()
Выделяет следующую строку и делает её видимой.
See Also:
  • JList.ensureIndexIsVisible(int)

installKeyboardActions

protected void installKeyboardActions()
Регистрирует привязки клавиатуры к JList, с которым связан BasicListUI. Этот метод вызывается во время installUI().
See Also:
  • installUI(javax.swing.JComponent)

uninstallKeyboardActions

protected void uninstallKeyboardActions()
Отменяет регистрацию действий клавиатуры, установленных из installKeyboardActions. Этот метод вызывается во время uninstallUI() — подклассы должны гарантировать, что все действия клавиатуры, зарегистрированные в installUI, удалены здесь.
See Also:
  • installUI(javax.swing.JComponent)

installListeners

protected void installListeners()
Создаёт и устанавливает слушатели для JList, его модели и его selectionModel. Этот метод вызывается во время installUI().
See Also:
  • installUI(javax.swing.JComponent)
  • uninstallListeners()

uninstallListeners

protected void uninstallListeners()
Удаляет слушателей из JList, его модели и selectionModel. Все поля слушателей здесь сброшены в null. Этот метод вызывается во время uninstallUI(), он должен быть синхронизирован с installListeners.
See Also:
  • uninstallUI(javax.swing.JComponent)
  • installListeners()

installDefaults

protected void installDefaults()
Инициализирует свойства списка, такие как шрифт, цвет переднего и заднего плана, и добавляет CellRendererPane. Свойства шрифта, цвета переднего и заднего плана устанавливаются только в том случае, если их текущее значение равно null или UIResource, другие свойства устанавливаются, если текущее значение равно null.
See Also:
  • uninstallDefaults()
  • installUI(javax.swing.JComponent)
  • CellRendererPane

uninstallDefaults

protected void uninstallDefaults()
Устанавливает свойства списка, которые не были явно переопределены, в null. Свойство считается переопределённым, если его текущее значение не является UIResource.
See Also:
  • installDefaults()
  • uninstallUI(javax.swing.JComponent)
  • CellRendererPane

installUI

public void installUI(JComponent c)
Инициализирует this.list, вызвав installDefaults(), installListeners() и installKeyboardActions() в указанном порядке.
Overrides:
installUI в классе ComponentUI
Parameters:
c — компонент, в котором устанавливается этот делегат пользовательского интерфейса
See Also:
  • installDefaults()
  • installListeners()
  • installKeyboardActions()

uninstallUI

public void uninstallUI(JComponent c)
Деинициализирует this.list, вызвав uninstallListeners(), uninstallKeyboardActions() и uninstallDefaults() в указанном порядке. Устанавливает this.list в null.
Overrides:
uninstallUI в классе ComponentUI
Parameters:
c — компонент, из которого удаляется этот делегат пользовательского интерфейса; этот аргумент часто игнорируется, но может использоваться, если объект пользовательского интерфейса бессостоятелен и используется несколькими компонентами
See Also:
  • uninstallListeners()
  • uninstallKeyboardActions()
  • uninstallDefaults()

createUI

public static ComponentUI createUI(JComponent list)
Возвращает новый экземпляр BasicListUI. Делегаты BasicListUI выделяются по одному на каждый JList.
Parameters:
list — компонент
Returns:
новый реализация ListUI для Windows look and feel.

locationToIndex

public int locationToIndex(JList<?> list, Point location)
Возвращает индекс ячейки в указанном JList, ближайшей к заданному местоположению в системе координат списка. Чтобы определить, действительно ли ячейка содержит заданное расположение, сравните точку с границами ячейки, как предоставлено getCellBounds. Этот метод возвращает -1, если модель списка пуста.
Specified by:
locationToIndex в классе ListUI
Parameters:
list — список
location — координаты точки
Returns:
индекс ячейки, ближайший к заданному местоположению, или -1
Throws:
NullPointerException — если location равно null

indexToLocation

public Point indexToLocation(JList<?> list, int index)
Возвращает начальную точку заданного элемента в указанном списке в системе координат списка. Возвращает null, если индекс некорректен.
Specified by:
indexToLocation in class ListUI
Parameters:
list - список
index - индекс ячейки
Returns:
начальная точка ячейки или null

getCellBounds

public Rectangle getCellBounds(JList<?> list, int index1, int index2)
Возвращает прямоугольник, ограничивающий диапазон ячеек, в системе координат данного списка, для диапазона ячеек, указанного двумя индексами. Индексы могут быть заданы в любом порядке.

Если меньший индекс находится за пределами диапазона ячеек списка, этот метод возвращает null. Если меньший индекс корректен, но больший индекс находится за пределами диапазона списка, возвращаются границы только первого индекса. В противном случае возвращаются границы валидного диапазона.

Specified by:
getCellBounds in class ListUI
Parameters:
list - список
index1 - первый индекс в диапазоне
index2 - второй индекс в диапазоне
Returns:
прямоугольник, ограничивающий диапазон ячеек, или null

getRowHeight

protected int getRowHeight(int row)
Возвращает высоту указанной строки на основе текущего макета.
Parameters:
row - строка
Returns:
высота указанной строки или -1, если строка некорректна
See Also:
  • convertYToRow(int)
  • convertRowToY(int)
  • updateLayoutState()

convertYToRow

protected int convertYToRow(int y0)
Преобразует относительную координату Y в строку, содержащую ее, на основе текущего макета. Если координата Y не попадает ни в одну строку, возвращает -1.
Parameters:
y0 - относительная координата Y
Returns:
строка, содержащая y0, или -1
See Also:
  • getRowHeight(int)
  • updateLayoutState()

convertRowToY

protected int convertRowToY(int row)
Возвращает относительную координату Y начала указанной строки или -1, если строка некорректна.
Parameters:
row - строка
Returns:
координата Y начала строки или -1
See Also:
  • getRowHeight(int)
  • updateLayoutState()

maybeUpdateLayoutState

protected void maybeUpdateLayoutState()
Если updateLayoutStateNeeded не равно нулю, вызывает updateLayoutState() и сбрасывает updateLayoutStateNeeded. Этот метод должен вызываться методами перед выполнением любых вычислений, основанных на геометрии списка. Например, это первый вызов в paint() и getPreferredSize().
See Also:
  • updateLayoutState()

updateLayoutState

protected void updateLayoutState()
Пересчитывает значение cellHeight или cellHeights на основе текущего шрифта и текущих значений fixedCellWidth, fixedCellHeight и prototypeCellValue.
See Also:
  • maybeUpdateLayoutState()

createMouseInputListener

protected MouseInputListener createMouseInputListener()
Создаёт делегата, который реализует MouseInputListener. Делегат добавляется в соответствующие списки слушателей java.awt.Component в момент installUI(). Подклассы могут переопределить этот метод, чтобы вернуть настраиваемого слушателя, например,
 class MyListUI extends BasicListUI {
    protected MouseInputListener createMouseInputListener() {
        return new MyMouseInputHandler();
    }
    public class MyMouseInputHandler extends MouseInputHandler {
        public void mouseMoved(MouseEvent e) {
            // do some extra work when the mouse moves
            super.mouseMoved(e);
        }
    }
 }
 
Returns:
экземпляр MouseInputListener
See Also:
  • BasicListUI.MouseInputHandler
  • installUI(javax.swing.JComponent)

createFocusListener

protected FocusListener createFocusListener()
Возвращает экземпляр FocusListener.
Returns:
экземпляр FocusListener

createListSelectionListener

protected ListSelectionListener createListSelectionListener()
Создаёт экземпляр ListSelectionHandler, который добавляется к списку JLists по мере необходимости selectionModel. Подклассы могут переопределить этот метод, чтобы вернуть настраиваемого слушателя, например,
 class MyListUI extends BasicListUI {
    protected ListSelectionListener createListSelectionListener() {
        return new MySelectionListener();
    }
    public class MySelectionListener extends ListSelectionHandler {
        public void valueChanged(ListSelectionEvent e) {
            // do some extra work when the selection changes
            super.valueChange(e);
        }
    }
 }
 
Returns:
экземпляр ListSelectionHandler
See Also:
  • BasicListUI.ListSelectionHandler
  • installUI(javax.swing.JComponent)

createListDataListener

protected ListDataListener createListDataListener()
Создаёт экземпляр ListDataListener, который добавляется к списку слушателей JLists по мере необходимости моделью. Подклассы могут переопределить этот метод, чтобы вернуть настраиваемого слушателя, например,
 class MyListUI extends BasicListUI {
    protected ListDataListener createListDataListener() {
        return new MyListDataListener();
    }
    public class MyListDataListener extends ListDataHandler {
        public void contentsChanged(ListDataEvent e) {
            // do some extra work when the models contents change
            super.contentsChange(e);
        }
    }
 }
 
Returns:
экземпляр ListDataListener
See Also:
  • ListDataListener
  • JList.getModel()
  • installUI(javax.swing.JComponent)

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener()
Создаёт экземпляр PropertyChangeHandler, который добавляется к списку слушателей JList по мере необходимости installUI(). Подклассы могут переопределить этот метод, чтобы вернуть настраиваемого слушателя, например,
 class MyListUI extends BasicListUI {
    protected PropertyChangeListener createPropertyChangeListener() {
        return new MyPropertyChangeListener();
    }
    public class MyPropertyChangeListener extends PropertyChangeHandler {
        public void propertyChange(PropertyChangeEvent e) {
            if (e.getPropertyName().equals("model")) {
                // do some extra work when the model changes
            }
            super.propertyChange(e);
        }
    }
 }
 
Returns:
экземпляр PropertyChangeHandler
See Also:
  • PropertyChangeListener
  • installUI(javax.swing.JComponent)

© 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/plaf/basic/BasicListUI.html

Spec-Zone.ru

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