【问题标题】:Java JTable Sorting Doesn't Work for Just One ColumnJava JTable 排序不适用于一列
【发布时间】:2023-03-16 13:03:01
【问题描述】:

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

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

但是,数据被定义为double,纯粹简单:

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

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

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

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

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

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

【问题讨论】:

标签: java swing jtable


【解决方案1】:

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

【讨论】:

  • 所有情况下最舒适的方式 +1
猜你喜欢
  • 2015-01-28
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多