2011-05-18 37 views
4

我有一個JTable我鏈接到DefaultTableModelTableRowSorter。他們工作。當你點擊一行時,它的內容被複制到JTextfields,所以你可以編輯它們*。但是,如果您通過某個字段對錶格進行排序,然後單擊一行,則複製的內容將從之前的值(在排序之前)而不是從新的值中獲取。什麼可能導致這種情況?爲什麼TableRowSorter搞亂了我的結果?

*我這樣做是因爲該表只包含所有字段的一個子集。

+2

沒有任何代碼,我們只能假設有什麼不妥的地方。我的直覺是你錯過了模型和桌子之間的聯繫。排序後只有視圖被改變,模型保持不變。因此選擇索引與模型中索引處的值不同。檢查[TableRowSorter](http://download.oracle.com/javase/6/docs/api/javax/swing/table/TableRowSorter.html)用法,特別是表中的convertRowIndexToModel方法。 – Manoj 2011-05-18 11:08:59

+0

就是這樣,你們有這麼好的代碼鼻子! – vemv 2011-05-18 11:20:04

回答

7

看起來像是在獲取所選行索引時,在抓取數據之前不會將其轉換爲模型索引。

取而代之的是:

table.getSelectedRow() 

使用此:

table.convertRowIndexToModel(table.getSelectedRow()); 
+0

這個完美的作品,謝謝jzd! – vemv 2011-05-18 11:15:09

相關問題