Подтвердить что ты не робот

Почему JTable всегда вызывает ListSelectionListener дважды?

Нормально ли, что любые изменения в выбранной строке JTable будут запускать добавленный ListSelectionListener дважды?

Возможно ли, что ListSelectionListener можно запустить только один раз?

4b9b3361

Ответ 1

Посмотрите на событие, которое передается вашему слушателю, в частности

ListSelectionEvent.getValueIsAdjusting() 

выполнять любые операции, которые вы хотите сделать, когда это возвращает false.

Ответ 2

ListSelectionEvent.getValueIsAdjusting() будет работать как комментарий @MeBigFatGuy.

Аналогичный пример:

if(!e.getValueIsAdjusting()){
    String selectedData = null;

    int selectedRow = table.getSelectedRow();
    int selectedColumns = table.getSelectedColumn();

    for (int i = 0; i <= selectedRow; i++) {
        for (int j = 0; j <= selectedColumns; j++) {
            selectedData = (String) table.getValueAt(selectedRow, selectedColumns);
        }
    }
    System.out.println("Selected: " + selectedData);
}

он будет запущен только один раз.