JTable在Java 1.5中排序行

是否有一种简单的方法可以使用Java 1.5对JTable中的行进行排序( setAutoCreateRowSorterTableRowSorter似乎是Java 1.6的特性)?

Java 1.5中的排序只能通过库进行。

例如,从这里使用Kaarel或VLTable中提到的JXTable。

另一个好的图书馆是glazedlists

这也用于Spring Rich Client项目。

甚至有方法可以将Glazed Lists与JXTable一起使用

使用SwingX项目中的JXTable ,参见例如

  • SwingLabs:如何使用SwingX JXTable:排序行

JXTable需要一个大包,并且很难获得正确的版本。 (不高于Java 1.5的1.0版)。

尝试使用TableSorter.java。 得到它:

http://ouroborus.org/java/2.1/TableSorter.java

并将其插入您的项目中。

现在,将tableModel包装在TableSorter的实例中,并将其包含在JTable中。 TableSorter充当JTable实例和tableModel的“中间人”。

使用类似这样的代码(代码未经测试):

 JTable myTable = new JTable(); TableSorter mySorter = new TableSorter(myTableModel, myTable.getTableHeader()); myTable.setTableModel(mySorter); 

您可以像下面这样以编程方式设置sprting:

 mySorter.setSortingStatus(0,TableSorter.ASCENDING); 

尝试通过tweeking MouseHandler.mouseClicked()使其跳过点击顺序中的NOT_SORTED选项,并弄乱渲染器以获得更好的列标题以及三角形的放置和可见性。