2011-06-20 42 views
4

在用戶排序的內容後檢索JTable行內容我有一個包含兩個表A和B的窗格。在A中選擇一行時,應調整B的內容。通過單擊列

我的代碼檢測罰款行選擇。但是,當用戶點擊列標題對行進行排序時,A表格模型中似乎沒有考慮到這一點。

所以,我可以得到選定的行號(這是正確的考慮排序),但是當我嘗試使用它的表模型檢索行字段的內容時,它給了我值如同行未被排序。

如何從選定的行號中檢索所選行的內容?

回答

10

沒有任何代碼,很難確定你的問題是什麼。但是,這聽起來像是混合了視圖和模型之間的行索引。當你有一個行號時,你必須非常清楚你所指的座標系(視圖或模型)。有關convertRowIndexToModelconvertRowIndexToView方法,請參見the JTable API

你可能需要的東西是這樣的:

JTable table = ...; 
TableModel model = ...; 

int viewRow = table.getSelectedRow(); 
int modelRow = table.convertRowIndexToModel(viewRow); 
int viewColumn = table.getSelectedColumn(); 
int modelColumn = table.convertColumnIndexToModel(viewColumn); 
Object cell = model.getValueAt(modelRow, modelColumn); 
+0

編輯的列索引也是如此。如果您錯過了轉換列,您可能通常不會注意到,但是如果用戶拖動並重新排列了列上的列,那麼如果您沒有轉換列座標,它也會中斷。 – wolfcastle