我对JTable有一个非常奇怪的问题。
我从数据库中将数据放入JTable中。当用户双击任何单元格时,它会复制用户双击的行的第一列的单元格内容。到目前为止,它完美无缺。
当用户通过单击标题对JTable进行排序时,会出现问题。当表已经排序时,现在当用户双击任何行时,它不会当前存储在该行的第一列上。当JTable未排序时,它会复制最初存储在该行第一列的内容。
有什么想法吗?
答案 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只是一个观点。