Java Swing: очистить JList без запуска слушателя - PullRequest
4 голосов
/ 12 ноября 2010

Моя ситуация такова: у меня есть JList, который запускает поиск (используя ListSelectionListener) всякий раз, когда в списке делается выбор. Я пытаюсь сбросить выбор в списке, используя list.clearSelection(). Проблема в том, что использование clearSelection() запускает прослушиватель, который вызывает поиск: не хорошо.

Есть ли способ очистки выбора в списке без запуска слушателя? Может ли это быть намеком на то, что я не использую слушателя должным образом? В общем, можете ли вы что-то изменить в пользовательском интерфейсе Swing, не вызывая события, связанные с этим элементом?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 12 ноября 2010

Прочтите раздел из учебника по Swing на Как написать слушатель выбора списка для рабочей демонстрации.

Обычно генерируются два события, одно для отмены выбора и одно для выбора,Вы должны выполнять поиск только тогда, когда что-то выбрано.Вы также должны быть в состоянии проверить выбранный индекс, который должен быть чем-то отличным от -1, я полагаю.

0 голосов
/ 08 февраля 2014

Попробуйте следующий шаблон при использовании метода clear () для очистки Jlist:

ListObjectName.addListSelectionListener(new ListSelectionListener() {

  public void valueChanged(ListSelectionEvent e) {
    if (!e.getValueIsAdjusting()){
      if(ListObjectName.getSelectedIndex()>-1){
        //Your Code
      }
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...