2013-10-22 38 views
2

我有一个JTable与后续值:排序的JTable,因为我喜欢

 
Name  age  money 

    A   13   SGD23 

    B   41   SGD133

如果我点击页眉(姓名),它将排序为A,B,再次点击,将是B,A

但是为了这笔钱,如果我点击它,我想对价值进行排序,如SGD 23,SGD 133。但是,Swing TableRowSort会将这些值分类为SGD 133,SGD23。这是因为列值类是String。那么任何人都可以帮助我做到这一点?请注意,货币有CurrencyCode SGD。

+0

访问此[链接](http://stackoverflow.com/questions/2075396/correctly-getting-data-from-a-sorted-jtable)可能会对你有用 – Engineer

+1

有三种方式,一切都是关于设计只有1.把货币分隔列,然后是可以结合任何货币,2.如果是只有一种货币SGD,那么使用Locale,Formatter和Renderer,3.创建自定义比较器 – mKorbel

回答

2

你需要实现一个Comparator它知道如何值在列进行排序,然后使用DefaultRowSorter.setComparator(...)

另一种方法是只存储你的货币的数字部分和应用货币代码作为其应用部分CellRenderer。这样,您可以简单地对数字值进行排序,而不是尝试调整字符串比较器以满足您的需求。

+0

我试过tablePanel.getJTable ().setAutoCreateRowSorter(真); \t \t \t((TableRowSorter还)tablePanel.getJTable()。getRowSorter())。setComparator(AIR_COL_MU,新的比较(){ \t \t \t \t @覆盖 \t \t \t \t公众诠释比较(对象01,对象O2){ \t \t \t \t \t如果(01 == O 2){ \t \t \t \t \t \t \t \t \t \t \t} \t \t \t \t \t返回0; \t \t \t \t} \t \t \t}); – Sstx

+0

但是当我调试它时,不能在比较方法中破坏 – Sstx

+0

@SStx你能用你的代码更好吗?还是更好一个[SSCCE](http://sscce.org/)?没有看到代码就很难给出具体的建议。 –