java - 行条目少于显示和排序问题的 JTable

标签 java swing sorting jtable

我正在使用 JTable 对象来显示存储在数据库中的一些数据。 现在我想实现以下结果:

即使我的数据库表条目较少,显示的 JTable 也必须至少有 n(假设为 10)行。空行必须始终显示在表格的末尾。

从现在开始我做了以下事情:

我实现了扩展 AbstractTableModel 的自定义表格模型。在实现的方法 getRowCount 中我做了:

public int getRowCount() {
       if (myRowCount < 10 )

           return 10;
       else 
           return myRowCount;
}

问题是:

  1. 这段代码工作正常,但我 想知道这是否正确 达到这个结果的方法。是 这是一个好的解决方案吗?
  2. 除此之外,如果我尝试排序 我得到不需要的输出的行。事实上,空行似乎在排序时被考虑在内,产生的结果是(例如按后代顺序排序 int 列)空行显示在表的开头。我是否必须实现我的自定义 TableRowSorter 以避免这种行为,或者是否可以使用默认的 TableRowSorter (table.setAutoCreateRowSorter(true))?

提前致谢

编辑: 我阅读了@mKorbel 与@kleopatra 的链接@camickr posts .这对我帮助很大。但我真的想尽可能以最干净的方式做到这一点,因为这个类在我的应用程序中非常重要。 上一个链接帖子中提出的解决方案是否足够干净?或者它有一些我现在看不到的缺点?

我开始赏金了。请给我好的建议!! 谢谢..

马可

最佳答案

如果您希望能够编辑这些空行,那么我想唯一的方法是覆盖 DefaultRowSortergetComparator(column) 方法。

编辑 我认为您可以覆盖 getComparator(),或者为每一列设置一个比较器,以便它检查其中一个值是否为 null 等。我试过了,它没有用,因为DefaultRowSorter里面有空检查,还有其他问题。

不幸的是,DefaultRowSorter 中的大部分内容都是私有(private)的,因此没有太多的自定义空间。如果您想要这种行为,则必须编写自己的 RowSorter 实现。我建议您仅在此功能对您的应用绝对重要时才采用此方法。

关于java - 行条目少于显示和排序问题的 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138230/

相关文章:

java - 让每个实现接口(interface)的类都调用一个方法?

java - Java 中的可见性已消失

java - 具有混合大小写字符且 DocumentFilter 设置为大写的 FormattedTextField

java - 显示 JDialog 时全局禁用所有鼠标输入

java - 使用 for 循环将一个数组分配给另一个数组

JAVA 如何生成 1 到 24 之间的整数,但每个整数都需要一对

java - 为什么谷歌云存储文件的大小小于使用谷歌应用引擎 Java 上传的文件大小

Java - 反转字符串中的单词

java - 使用对象的特定变量对 LinkedList 进行排序?

sorting - 在 lua 中实现表以访问特定部分供以后使用