|
Spec-Zone .ru
спецификации, руководства, описания, API
|
События выбора списка имеют место, когда выбор в списке или таблице или изменяется или только что изменился. События выбора списка запускаются от объекта, который реализует ListSelectionModel интерфейс. Чтобы получить объект модели выбора списка таблицы, можно использовать также getSelectionModel метод или getColumnModel ().getSelectionModel ().
Чтобы обнаружить события выбора списка, Вы регистрируете слушателя на соответствующем объекте модели выбора списка. JList class также дает Вам опцию регистрации слушателя в списке непосредственно, а не непосредственно в модели выбора списка.
Этот раздел смотрит на два примера, которые показывают, как слушать события выбора списка на модели выбора. Примеры, что Слушатели Выбора Списка Использования перечисляют примеры, которые слушают в списке непосредственно.
В этих двух примерах можно динамически изменить режим выбора на любой из трех поддерживаемых режимов:
Вот изображение примера ListSelectionDemo, работающего в Списке:

Вот изображение примера TableListSelectionDemo, работающего в Таблице:

Можно найти всю программу ListSelectionDemo в
Вот код от 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 |
Как Использовать Таблицы | Использование два различных слушателя выбора списка на одной таблице. Один слушатель слушает события выбора списка на столбцах таблицы, другой слушает события выбора списка на строках таблицы. |