2012-06-29 45 views
1

我使用ListSelectionListener来监听JTable的选择,以执行与表中选定项目相关的其他任务。但是为什么下面的代码在开始时的一个选择中执行了两次,并且在该表正在更新后多次执行了?与ListSelectionListener相关

public void valueChanged(ListSelectionEvent e) 
    System.out.println(tablelist.getSelectedIndex());  
} 

回答

3

因为ListSelectionModel interfaceListSelectionListene R请始终射击两个事件

int firstIndex = e.getFirstIndex(); 
int lastIndex = e.getLastIndex(); 

一切都在Oracle tutorial

+3

+1并考虑常读)e.getValueIsAdjusting的'值(' –

+0

是它引发两个事件。但我的情况是这样的:1)我写了一个数据库函数,它将返回一个Jtable的模型。2)我将调用该函数,并将我的自定义侦听器设置为由函数。3)稍后,当数据库更新为新行时,将重复执行步骤2.现在,在此情况下,将执行以下代码多次: public void valueChanged(ListSelectionEvent e) System.out.println(tablelist。 getSelectedIndex()); } – svkvvenky

+0

必须拆分为1)数据库 - >只能从JTable单元格更改值可以保存,2)JTables查看v.s. TableModel(所有更改必须在EDT上完成)3)最小化Listener对数据库v.s.的影响。 JTable中 – mKorbel