Почему JTable всегда вызывает ListSelectionListener дважды? - PullRequest
14 голосов
/ 03 мая 2011

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

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

Ответы [ 2 ]

25 голосов
/ 03 мая 2011

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

ListSelectionEvent.getValueIsAdjusting() 

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

3 голосов
/ 25 ноября 2016

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);
}

будет срабатывать только один раз.

...