Событие JTable вызывается два раза, а нужно один.. - Java
Формулировка задачи:
Есть таблица JTable
Обрабатываю у нее событие выбора строки следующим образом:
Проблема в том, что метод 'МЕТОД' выполняется по два раза при каждом выборе!!! Т.е. при каждом выборе строки в таблице событие возбуждается 2 раза... Это не есть то, что мне нужно.
Вопрос: в чем дело? Что делать?
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); } }
Решение задачи: «Событие 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 (); } } });
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д