Java JTable 排序不仅适用于一列



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

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

然而,数据被定义为double类型,非常简单:

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

正确排序的双精度类型的列定义方式相同。

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

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

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

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

我必须在扩展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();
    }
}