在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));
还有什么可能导致这一列数字排序为字符串?
答案 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();
}
}