2011-06-20 35 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