我正在使用 JTable 对象来显示存储在数据库中的一些数据。 现在我想实现以下结果:
即使我的数据库表条目较少,显示的 JTable 也必须至少有 n(假设为 10)行。空行必须始终显示在表格的末尾。
从现在开始我做了以下事情:
我实现了扩展 AbstractTableModel 的自定义表格模型。在实现的方法 getRowCount 中我做了:
public int getRowCount() {
if (myRowCount < 10 )
return 10;
else
return myRowCount;
}
问题是:
- 这段代码工作正常,但我 想知道这是否正确 达到这个结果的方法。是 这是一个好的解决方案吗?
- 除此之外,如果我尝试排序 我得到不需要的输出的行。事实上,空行似乎在排序时被考虑在内,产生的结果是(例如按后代顺序排序 int 列)空行显示在表的开头。我是否必须实现我的自定义 TableRowSorter 以避免这种行为,或者是否可以使用默认的 TableRowSorter (table.setAutoCreateRowSorter(true))?
提前致谢
编辑: 我阅读了@mKorbel 与@kleopatra 的链接@camickr posts .这对我帮助很大。但我真的想尽可能以最干净的方式做到这一点,因为这个类在我的应用程序中非常重要。 上一个链接帖子中提出的解决方案是否足够干净?或者它有一些我现在看不到的缺点?
我开始赏金了。请给我好的建议!! 谢谢..
马可
最佳答案
如果您希望能够编辑这些空行,那么我想唯一的方法是覆盖 DefaultRowSorter
的 getComparator(column)
方法。
编辑 我认为您可以覆盖 getComparator(),或者为每一列设置一个比较器,以便它检查其中一个值是否为 null 等。我试过了,它没有用,因为DefaultRowSorter里面有空检查,还有其他问题。
不幸的是,DefaultRowSorter 中的大部分内容都是私有(private)的,因此没有太多的自定义空间。如果您想要这种行为,则必须编写自己的 RowSorter 实现。我建议您仅在此功能对您的应用绝对重要时才采用此方法。
关于java - 行条目少于显示和排序问题的 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138230/