问题描述
|
我正在使用JTable对象显示存储在数据库中的一些数据。
现在,我想获得以下结果:
即使我的数据库表中的条目较少,显示的JTable也必须至少具有n行(使其为10)。空行必须始终显示在表的末尾。
从现在开始,我将执行以下操作:
我实现了扩展AbstractTableModel的自定义表格模型。在实现的方法getRowCount中,我做到了:
public int getRowCount() {
if (myRowCount < 10 )
return 10;
else
return myRowCount;
}
问题是:
这段代码可以正常工作,但是我当时
想知道这是否正确
实现此结果的方法。是
这是一个好的解决方案?
除此之外,如果我尝试排序
我得到了不希望有的输出的行。实际上,排序时似乎考虑了空行,产生的结果是(例如,按后代顺序对int列进行排序)空行显示在表的开头。我是否必须实现自定义tablerowsorter来避免该行为,或者是否可以使用默认行为(table.setautocreateRowSorter(true))?
提前致谢
编辑:
我阅读了@mKorbel链接和@kleopatra @camickr帖子。它对我有很大帮助。但是我真的想以最简洁的方式做到这一点,因为此类在我的应用程序中非常重要。
前一个链接文章中提出的解决方案是否足够干净?还是有一些我现在看不到的缺点?
我开始了赏金计划。请给我很好的建议!
谢谢..
马可
解决方法
如果您希望能够编辑这些空行,那么我猜唯一的方法是重写
DefaultRowSorter
sgetComparator(column)
方法。
编辑我以为您可以覆盖getComparator()或将Comparator设置为每一列,以便它检查值之一是否为null等。我尝试了一下,但它没有用,因为DefaultRowSorter中存在null检查,还有其他问题。
不幸的是,DefaultRowSorter中的大多数内容都是私有的,因此自定义的空间不大。如果您想要这种行为,则必须编写自己的RowSorter实现。我建议您仅在此功能对您的应用绝对重要时才采用这种方法。