我对 JTable 有一个非常奇怪的问题。
我将数据从 DB 放入 JTable 中。当用户双击任何单元格时,它会复制用户双击所在行的第一列的单元格内容。到目前为止,它运行完美。
当用户通过单击标题对 JTable 进行排序时,就会出现问题。当表格已排序并且现在当用户双击任何行时,它不会当前存储在该行的第一列上。当 JTable 未排序时,它复制最初存储在该行第一列的内容。
有任何想法吗?
最佳答案
问题:
这里的问题是您正在获取 JTable TableModel
中的初始行索引。 ,而不是表 View 中显示的相关行索引。
解决方案:
您可以使用 convertRowIndexToModel(index) method 将已排序 jTable 的显示索引与其在 dataModel 中的相关索引进行映射。它接收 View 中的行索引并返回模型中相应行的索引。
假设您有以下 jTable:
TableModel myModel = createMyTableModel();
JTable table = new JTable(myModel);
table.setRowSorter(new TableRowSorter(myModel));
然后循环遍历模型索引并对每个索引使用此方法以获取
TableModel
中对应的索引。 :table.getRowSorter().convertRowIndexToModel(0); // index 0 here
关于java - JTable 中的选定行以及排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644611/