Spec-Zone .ru
спецификации, руководства, описания, API
|
События выбора списка имеют место, когда выбор в списке или таблице или изменяется или только что изменился. События выбора списка запускаются от объекта, который реализует ListSelectionModel
интерфейс. Чтобы получить объект модели выбора списка таблицы, можно использовать также getSelectionModel
метод или getColumnModel ().getSelectionModel ().
Чтобы обнаружить события выбора списка, Вы регистрируете слушателя на соответствующем объекте модели выбора списка. JList
class также дает Вам опцию регистрации слушателя в списке непосредственно, а не непосредственно в модели выбора списка.
Этот раздел смотрит на два примера, которые показывают, как слушать события выбора списка на модели выбора. Примеры, что Слушатели Выбора Списка Использования перечисляют примеры, которые слушают в списке непосредственно.
В этих двух примерах можно динамически изменить режим выбора на любой из трех поддерживаемых режимов:
Вот изображение примера ListSelectionDemo, работающего в Списке:
Вот изображение примера TableListSelectionDemo, работающего в Таблице:
Можно найти всю программу ListSelectionDemo в
и вся программа TableListSelectionDemo в ListSelectionDemo.java
.TableListSelectionDemo.java
Вот код от ListSelectionDemo
это устанавливает модель выбора и добавляет слушателя ее:
...//where the member variables are defined JList list; ...//in the init method: listSelectionModel = list.getSelectionModel(); listSelectionModel.addListSelectionListener( new SharedListSelectionHandler()); ...
И вот код для слушателя, который работает на все возможные режимы выбора:
class SharedListSelectionHandler implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { ListSelectionModel lsm = (ListSelectionModel)e.getSource(); int firstIndex = e.getFirstIndex(); int lastIndex = e.getLastIndex(); boolean isAdjusting = e.getValueIsAdjusting(); output.append("Event for indexes " + firstIndex + " - " + lastIndex + "; isAdjusting is " + isAdjusting + "; selected indexes:"); if (lsm.isSelectionEmpty()) { output.append(" <none>"); } else { // Find out which indexes are selected. int minIndex = lsm.getMinSelectionIndex(); int maxIndex = lsm.getMaxSelectionIndex(); for (int i = minIndex; i <= maxIndex; i++) { if (lsm.isSelectedIndex(i)) { output.append(" " + i); } } } output.append(newline); } }
Это valueChanged
метод выводит на экран первые и последние индексы, о которых сообщает событие, значение события isAdjusting
флаг, и индексы в настоящий момент выбираются.
Отметьте, что первые и последние индексы, о которых сообщает событие, указывают на содержащий диапазон элементов, для которых изменился выбор. Если режим выбора является многократным выбором интервала, некоторые элементы в пределах диапазона, возможно, не изменились. isAdjusting
флаг true
если пользователь все еще управляет выбором, и false
если пользователь закончил изменять выбор.
ListSelectionEvent
объект, в который передают valueChanged
указывает только, что выбор изменился. Событие не содержит информации о текущем выборе. Так, этот метод запрашивает модель выбора, чтобы выяснить текущий выбор.
Интерфейс ListSelectionListener
Поскольку ListSelectionListener
имеет только один метод, у него нет никакого соответствующего адаптера class.
Метод | Цель |
---|---|
valueChanged (ListSelectionEvent) | Вызванный в ответ на изменения выбора. |
Метод | Цель |
---|---|
(в java.util.EventObject ) |
Возвратите объект, который запустил событие. Если Вы регистрируете слушателя выбора списка в списке непосредственно, то источник для каждого события является списком. Иначе, источник является моделью выбора. |
|
Возвратите индексирование первого элемента, значение выбора которого изменилось. Отметьте, что для многократного выбора интервала, первые и последние элементы, как гарантируют, изменятся, но элементы между ними не могли бы иметь. Однако, когда Вы нажимаете клавишу Ctrl и перемещаетесь вверх или вниз, ведущий выбор вызывает события, запускаемые даже при том, что фактический выбор не изменился. |
|
Возвратите индексирование последнего элемента, значение выбора которого изменилось. Отметьте, что для многократного выбора интервала, первые и последние элементы, как гарантируют, изменятся, но элементы между ними не могли бы иметь. Однако, когда Вы нажимаете клавишу Ctrl и перемещаетесь вверх и вниз, ведущий выбор вызывает события, запускаемые даже при том, что фактический выбор не изменился. |
|
Возвратиться true если выбор все еще изменяется. Много слушателей выбора списка интересуются только конечным состоянием выбора, и могут события выбора черного списка, когда этот метод возвращается true . |
Следующая таблица приводит примеры, которые используют слушателей выбора списка.
Пример | Где Описано | Примечания |
---|---|---|
ListSelectionDemo |
Этот раздел | Отчеты все события выбора списка, которые происходят в списке. Позволяет пользователю динамически изменять режим выбора. |
TableListSelectionDemo |
Этот раздел | Отчеты все события выбора списка, которые происходят на таблице. Позволяет пользователю динамически изменять режим выбора. |
ListDemo |
|
Слушает события в единственном списке выбора (не на его модели выбора). Включает и отключает кнопку в зависимости от того, выбираются ли какие-либо элементы в списке. |
SplitPaneDemo |
Как Использовать Списки | Слушает события в единственном списке выбора (не на его модели выбора). |
SimpleTableSelectionDemo |
Как Использовать Таблицы | Использование два различных слушателя выбора списка на одной таблице. Один слушатель слушает события выбора списка на столбцах таблицы, другой слушает события выбора списка на строках таблицы. |