Java DefaultListModel - PullRequest
       6

Java DefaultListModel

1 голос
/ 11 мая 2011
if(incasationBegin > 0)
{
  int anwser = JOptionPane.showConfirmDialog(null, Config.QUESTION,"Confirm", JOptionPane.YES_NO_OPTION);
  if(anwser == 1)
  {
      jList0.setSelectedIndex(incasationBegin);
      return;
  }
}
incasationBegin = jList0.getSelectedIndex();

Как мне setSelectedIndex без вызова jList0ListSelectionValueChanged экшн? Потому что, когда я нажимаю на опцию подтверждения всплывающего окна и когда я нажимаю НЕТ, новый элемент все еще выбирается. Я пытался добавить incasationBegin =0; перед возвратом, но затем при первом нажатии подтвердить всплывающее окно.

1 Ответ

2 голосов
/ 11 мая 2011

Дай мне посмотреть, правильно ли я тебя понял. Вы добавляете ListSelectionListener к JList и хотите, чтобы ваш вызов на setSelectedIndex не вызвал событие valueChanged, не так ли?

Вы можете попробовать много разных подходов здесь:

  1. Отложите ваш вызов на jList0.addListSelectionListener(... таким образом, чтобы при вызове setSelectedIndex.
  2. Пусть прослушиватель valueChanged проверяет метод на наличие "включенного состояния", например, читает boolean isEnabled. Установите для этого условия значение false перед вызовом setSelectedIndex и значение true после этого.
  3. Позвоните jList0.removeListSelectionListener(.. до звонка на setSelectedIndex. Снова добавьте слушателя в список после звонка.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...