JTable中的选定行以及排序

时间:2015-06-04 13:05:07

标签: java swing jtable tablerowsorter

我对JTable有一个非常奇怪的问题。

我从数据库中将数据放入JTable中。当用户双击任何单元格时,它会复制用户双击的行的第一列的单元格内容。到目前为止,它完美无缺。

当用户通过单击标题对JTable进行排序时,会出现问题。当表已经排序时,现在当用户双击任何行时,它不会当前存储在该行的第一列上。当JTable未排序时,它会复制最初存储在该行第一列的内容。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

<强>问题:

这里的问题是你得到JTable TableModel中的初始行索引,而不是表格视图中显示的相关行索引。

<强>解决方案:

您可以使用convertRowIndexToModel(index) method在dataModel中将已排序的jTable的显示索引与其相关的索引进行映射,这将在视图中输入行索引并返回模型中相应行的索引。

让我们说你有以下jTable:

TableModel myModel = createMyTableModel();
JTable table = new JTable(myModel);
table.setRowSorter(new TableRowSorter(myModel));

然后循环遍历模型索引并将此方法与每个索引一起使用以获取TableModel中的相应索引:

table.getRowSorter().convertRowIndexToModel(0); // index 0 here

答案 1 :(得分:2)

正如How to Use Tables: Sorting and Filtering中所述,&#34;使用分拣机时,请务必记住转换单元格坐标。&#34;最有可能的是,你在事件处理程序中忽略了这一点。

答案 2 :(得分:1)

尝试对JTable TableModel数据进行排序。 Jtable - &gt; TableModel是保存实际数据的那个。 JTable只是一个观点。