我有一个jTable
从数据库查询加载数据
此负载产生 32 个结果,因此有 32 行TableModel
With myTable.getRowCount()
我正确得到 32
然后我创建一个新的空模型并将其加载到表中
之后,如果我打电话myTable.getRowCount()
我还是32
但如果我调用 myModel.getRowCount() 我正确地得到 0!
如果我的表使用模型,为什么 table.getRowCount() 和 model.getRowCount() 之间应该有区别?
...
System.out.println(myTable.getRowCount()); // 32
String[] columnNames= {null};
DefaultTableModel emptyModel= new DefaultTableModel(null, columnNames);
emptyModel.setRowCount(0);
myTable.setModel(emptyModel);
System.out.println(myTable.getRowCount()); // still 32, expecting 0
System.out.println(emptyModel.getRowCount()); // 0 as expected
当使用自定义 RowSorter(或任何与此相关的 RowSorter)时,必须注意确保排序器和表的模型始终匹配。如指定setRowSorter
Java文档:
如果 RowSorter 的底层模型与此 JTable 的底层模型不同,将会导致未定义的行为。
The setModel
JTable 的方法不会更新行排序器,除非您使用默认的自动排序器(通过设置autoCreateRowSorter
旗帜)。
因此,您应该
- 保留对您的分拣机的引用并更新其模型
OR
- 通过设置使用默认的行排序器
setAutoCreateRowSorter(true)
在你的桌子上而不是定制的桌子上,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)