为什么JTable总是触发ListSelectionListener两次?

时间:2011-05-03 05:18:19

标签: java swing event-handling jtable

JTable所选行的任何更改是否会触发添加的ListSelectionListener两次,这是否正常?

ListSelectionListener是否可以只触发一次?

2 个答案:

答案 0 :(得分:25)

查看传递给侦听器的事件,特别是

ListSelectionEvent.getValueIsAdjusting() 

当返回false时执行你想要做的任何操作。

答案 1 :(得分:3)

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

它只会触发一次。