用户通过单击列对内容进行排序后检索JTable行内容

时间:2011-06-20 20:23:58

标签: java swing jtable selection sorted

我有一个包含两个表A和B的窗格。当在A中选择一行时,应该更新B的内容。

我的代码检测到罚款中的行选择。但是,当用户点击列标题对行进行排序时,在A的表模型中似乎不会考虑这一点。

因此,我可以获取所选的行号(考虑到排序是正确的),但是当我尝试使用其表模型从A检索行字段内容时,它会给出值,就好像行尚未排序一样。

如何从所选行号中检索所选行的内容?

1 个答案:

答案 0 :(得分: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 );