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

时间:2011-05-26 12:09:12

标签: java swing sorting jtable

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

即使我的db表具有较少的条目,显示的JTable也必须至少具有n(将其为10)行。必须始终在表的末尾显示空行。

从现在开始,我执行以下操作:

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

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

           return 10;
       else 
           return myRowCount;
}

问题是:

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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