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

标签 java swing jtable selection sorting

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

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

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

如何从选中的行号中获取选中行的内容?

最佳答案

没有任何代码,很难确定您的问题是什么。但是,听起来您正在混淆 View 和模型之间的行索引。当你有一个行号时,你必须非常清楚你指的是什么坐标系( View 或模型)。参见 the JTable API对于 convertRowIndexToModelconvertRowIndexToView 方法。

你可能需要这样的东西:

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 );

关于java - 在用户通过单击列对内容进行排序后检索 JTable 行内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417018/

相关文章:

java - 无法使用 javamail 阅读 Outlook 电子邮件

java - 如何在 Spring Boot 和 Data 中在运行时进行动态查询?

java - 如何创建随机怪物

java - 为 JTable 添加标题

java - 无法从 Swing 客户端创建初始上下文

java - 检查两个数组android之间的相同值

java - JOptionPane MessageDialog 在 java 中显示数组的数据

java - Java中如何真正关闭一个窗口?

java - 我可以将 JRadioButton 添加到 JTable 中吗

java - 如何卡住滚动 Pane 内的 JTable 行选择