Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Пишущие Слушатели События
Раздел: Реализующие Слушатели для Обычно Обрабатываемых Событий
Как Записать Слушателю Выбора Списка
Домашняя страница > Создание GUI С JFC/Swing > Пишущие Слушатели События

Как Записать Слушателю Выбора Списка

События выбора списка имеют место, когда выбор в списке или таблице или изменяется или только что изменился. События выбора списка запускаются от объекта, который реализует ListSelectionModel интерфейс. Чтобы получить объект модели выбора списка таблицы, можно использовать также getSelectionModel метод или getColumnModel ().getSelectionModel ().

Чтобы обнаружить события выбора списка, Вы регистрируете слушателя на соответствующем объекте модели выбора списка. JList class также дает Вам опцию регистрации слушателя в списке непосредственно, а не непосредственно в модели выбора списка.

Этот раздел смотрит на два примера, которые показывают, как слушать события выбора списка на модели выбора. Примеры, что Слушатели Выбора Списка Использования перечисляют примеры, которые слушают в списке непосредственно.

В этих двух примерах можно динамически изменить режим выбора на любой из трех поддерживаемых режимов:

Вот изображение примера ListSelectionDemo, работающего в Списке:

Снимок ListSelectionDemo, который демонстрирует режимы выбора и модель выбора списка.

Попробуйте это: 
  1. Нажмите кнопку Launch, чтобы работать, ListSelectionDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.Запускает пример ListSelectionDemo
  2. Выберите и отмените выбор элементов в списке. Команды мыши и клавиатуры, требуемые выбрать элементы, зависят от стили. Для стили Java щелкните левой кнопкой мыши, чтобы начать выбор, использовать клавишу Shift, чтобы расширить выбор рядом, и использовать клавишу CTRL, чтобы расширить выбор разобщено. Отметьте, что есть два типа выборов: Вывод и Привязка. Вывод является фокусируемым элементом, и Привязка является выделенным элементом. Когда Вы нажимаете клавишу Ctrl и перемещаетесь вверх и вниз, ведущий выбор вызывает события, запускаемые даже при том, что фактический выбор не изменился. Перетаскивание мыши перемещает или расширяет выбор, в зависимости от режима выбора списка.

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

Снимок TableListSelectionDemo, который демонстрирует режимы выбора и модель выбора списка.

Попробуйте это: 
  1. Нажмите кнопку Launch, чтобы работать, TableListSelectionDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.Запускает пример TableListSelectionDemo
  2. Выберите и отмените выбор элементов в таблице. Команды мыши и клавиатуры, требуемые выбрать элементы, зависят от стили. Для стили Java щелкните левой кнопкой мыши, чтобы начать выбор, использовать клавишу Shift, чтобы расширить выбор рядом, и использовать клавишу CTRL, чтобы расширить выбор разобщено. Отметьте, что есть два типа выборов: Вывод и Привязка. Вывод является фокусируемым элементом, и Привязка является выделенным элементом. Когда Вы нажимаете клавишу Ctrl и перемещаетесь вверх или вниз, ведущий выбор вызывает события, запускаемые даже при том, что фактический выбор не изменился. Перетаскивание мыши перемещает или расширяет выбор, в зависимости от режима выбора списка.

Можно найти всю программу ListSelectionDemo в ListSelectionDemo.java и вся программа TableListSelectionDemo в 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 указывает только, что выбор изменился. Событие не содержит информации о текущем выборе. Так, этот метод запрашивает модель выбора, чтобы выяснить текущий выбор.

API Слушателя Выбора Списка

Интерфейс ListSelectionListener

Поскольку ListSelectionListener имеет только один метод, у него нет никакого соответствующего адаптера class.

Метод Цель
valueChanged (ListSelectionEvent) Вызванный в ответ на изменения выбора.

API ListSelectionEvent

Метод Цель
Возразите getSource ()
(в java.util.EventObject)
Возвратите объект, который запустил событие. Если Вы регистрируете слушателя выбора списка в списке непосредственно, то источник для каждого события является списком. Иначе, источник является моделью выбора.
интервал getFirstIndex () Возвратите индексирование первого элемента, значение выбора которого изменилось. Отметьте, что для многократного выбора интервала, первые и последние элементы, как гарантируют, изменятся, но элементы между ними не могли бы иметь. Однако, когда Вы нажимаете клавишу Ctrl и перемещаетесь вверх или вниз, ведущий выбор вызывает события, запускаемые даже при том, что фактический выбор не изменился.
интервал getLastIndex () Возвратите индексирование последнего элемента, значение выбора которого изменилось. Отметьте, что для многократного выбора интервала, первые и последние элементы, как гарантируют, изменятся, но элементы между ними не могли бы иметь. Однако, когда Вы нажимаете клавишу Ctrl и перемещаетесь вверх и вниз, ведущий выбор вызывает события, запускаемые даже при том, что фактический выбор не изменился.
булев getValueIsAdjusting () Возвратиться true если выбор все еще изменяется. Много слушателей выбора списка интересуются только конечным состоянием выбора, и могут события выбора черного списка, когда этот метод возвращается true.

Примеры, что Слушатели Выбора Списка Использования

Следующая таблица приводит примеры, которые используют слушателей выбора списка.

Пример Где Описано Примечания
ListSelectionDemo Этот раздел Отчеты все события выбора списка, которые происходят в списке. Позволяет пользователю динамически изменять режим выбора.
TableListSelectionDemo Этот раздел Отчеты все события выбора списка, которые происходят на таблице. Позволяет пользователю динамически изменять режим выбора.
ListDemo Как Использовать Списки Слушает события в единственном списке выбора (не на его модели выбора). Включает и отключает кнопку в зависимости от того, выбираются ли какие-либо элементы в списке.
SplitPaneDemo Как Использовать Списки Слушает события в единственном списке выбора (не на его модели выбора).
SimpleTableSelectionDemo Как Использовать Таблицы Использование два различных слушателя выбора списка на одной таблице. Один слушатель слушает события выбора списка на столбцах таблицы, другой слушает события выбора списка на строках таблицы.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Записать Слушателю Данных Списка
Следующая страница: Как Записать Слушателю Мыши