setAutoCreateSorter的麻烦(真)

时间:2013-08-04 13:13:09

标签: java swing sorting jtable tablemodel

我做了一个jtable,并且everthing工作正常,但是我仍然在排序表的值时遇到问题。 我的一些代码:

    int nalt = (int) (1 + ((altmax - altmin) / incr));
    tabela = new JTable(new Object[nalt][6], colunas);
    for (int i = 0; i <= (nalt - 1); i = i) {
        for (double j = altmin; j <= altmax; j = j + incr) {
            Double tati = new Double(j);
            tabela.setValueAt(tati, i, 0);
            i = i + 1;
        }
    }
    tabela.setPreferredScrollableViewportSize(tabela.getPreferredSize());
    tabela.setFillsViewportHeight(true);
    tabela.setAutoCreateRowSorter(true);
    JScrollPane jps = new JScrollPane(tabela);
    panel2.add(jps);

问题是,当我尝试将列从较高的数字排序到较小的数字时,我得到的结果如下:

950
9000 
850
80000
7500
7
6000

如果你能帮助我,我会很感激

感谢

1 个答案:

答案 0 :(得分:2)

显示的排序顺序似乎基于String。如图所示here,您的(看不见的)TableModel必须返回合适的Comparable类型进行数字排序,例如Double.class。有关示例,请参阅tutorial

附录:我做错了什么?

Double.class的getColumnClass()的最小实现显示为here。启用自动RowSorter和实验以查看效果。

table.setAutoCreateRowSorter(true);