Событие JTable вызывается два раза, а нужно один.. - Java

Узнай цену своей работы

Формулировка задачи:

Есть таблица JTable Обрабатываю у нее событие выбора строки следующим образом:
ListSelectionModel rowSM = jTable1.getSelectionModel();
rowSM.addListSelectionListener(new MainFrame_jTable1List_SelectionListener());
// ...
  void jTable1_selectionPerformed(ListSelectionEvent e) {
   if (jTable1.getSelectedRow() != -1) {
    //запуск метода 'МЕТОД'
   }
  }
// ...
 
class MainFrame_jTable1List_SelectionListener implements ListSelectionListener {
    public void valueChanged(ListSelectionEvent e) {
      jTable1_selectionPerformed(e);
    }
  }
Проблема в том, что метод 'МЕТОД' выполняется по два раза при каждом выборе!!! Т.е. при каждом выборе строки в таблице событие возбуждается 2 раза... Это не есть то, что мне нужно. Вопрос: в чем дело? Что делать?

Решение задачи: «Событие JTable вызывается два раза, а нужно один..»

textual
Листинг программы
// ....
JTable currencyTable;
CurrencyTableModel ctm;           // Определен где-то дальше
ListSelectionModel lsm;
int selectedRow = 0;
// ...
ctm = new CurrencyTableModel ();
ctm.prepareInformation ();
currencyTable = new JTable (ctm);
currencyTable.setAutoResizeMode (JTable.AUTO_RESIZE_OFF);
currencyTable.setPreferredScrollableViewportSize (new Dimension (150, 150));
currencyTable.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
lsm = currencyTable.getSelectionModel ();
// ...
 
// Собственно сам обработчик перемещения и отслеживания
// текущей строки JTable
lsm.addListSelectionListener (new ListSelectionListener () {
    public void valueChanged (ListSelectionEvent e) {
       if (e.getValueIsAdjusting ()) return;
          ListSelectionModel l = (ListSelectionModel)e.getSource ();
          // Номер текущей строки таблицы
          if (! l.isSelectionEmpty ()) {
              selectedRow = l.getMinSelectionIndex ();
          }
    }
});

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы