2014-08-31 57 views
-1

我有JTable對象,填充了從我的AbstractTableModel實現中提供的數據。我有鼠標事件監聽器,當我點擊某個單元格時,我會得到它的行和列位置。有了這個值,我調用了TableModel中的getValueAt(int row,int column)方法,並獲得了我的數據。問題是當我點擊列名時,表中的數據可以被排序。當我再次嘗試調用getValueAt(),我得到的舊值 例子:在對錶進行排序後,JTable值不會刷新

的col1 | col2上

VAl11難| val21

val12 | val22 當我點擊COL1

值:

的col1 | col2上

val12 | val22

val11 | val21

我調用getValueAt(0,0),仍然得到val11,我應該得到val12。我怎樣才能解決這個問題 ?謝謝!

+0

我們如何猜測而不看你的代碼? – 2014-08-31 06:28:16

+0

我認爲這裏的代碼並不重要。可能有一些方法不是從TableModel中獲取值,而是從表本身獲取值 – user3546762 2014-08-31 06:30:52

回答

3

視圖中的行索引(您可能從鼠標偵聽器獲得 - 如果您按要求發佈代碼,我們將知道而不必猜測)與模型中的行索引不同該表被分類。要從視圖索引轉換爲模型索引,請使用convertRowIndexToModel()

請注意,列必須同樣小心,因爲用戶可以通過拖放操作對它們重新排序。

0

我設法做到了。 table.getValueAt()應該直接調用到表對象。我以前的嘗試是table.getModel()。getValueAt()。

+1

如果您尚未發佈代碼,則只能這樣做。 – 2014-08-31 06:37:03