Java JTable排序不适用于一列

时间:2011-11-02 22:04:27

标签: java swing jtable

在Java Swing应用程序(内置于Netbeans 6.9)中,我有一个包含21列的JTable。这些列中大约有14列由双值组成。前6列是日期和字符串。在第7列,双打开始。当应用程序运行时,通过单击表格的标题行可以正确排序表格中的每一列 - 第7列除外。该表认为此数据的类型为字符串,并将其作为字符串进行排序。

如果我将数据移动到另一列,那么新列现在将作为字符串排序。所以问题不在于特定的专栏,而在于这个数据。

然而,数据被定义为双重,纯粹和简单:

double x;
public double getX() {
    return x;
}

正确排序的双打列以相同的方式定义。

我甚至尝试将这个有问题的数据转换为双精度数据(即使它已经是一个双精度数)并且它没有任何区别。

我还尝试为不会排序为数字的列设置单元格渲染器(即使其他列不需要此步骤)。

table.getColumnModel().getColumn(6).setCellRenderer(table.getDefaultRenderer(Double.class));

还有什么可能导致这一列数字排序为字符串?

1 个答案:

答案 0 :(得分:3)

我必须在我的类中实现扩展DefaultTableModel的getColumnClass。

public class MyTableModel extends DefaultTableModel {

    public MyTableModel(Object[][] data, Object[] columnNames) {
        super(data, columnNames);
    }
            @Override
    public Class getColumnClass(int c) {
        return getValueAt(0, c).getClass();
    }
}