2012-06-29 48 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