我在 Matlab 中使用 JIDE 网格排序和自动过滤功能。我已经覆盖了 getColumnClass 并且过滤和排序对于整数、双精度和字符串列都很好(对数字进行数字排序,对字符串进行词法排序)。
但是,我面临日期列的主要问题。我已经覆盖了 getColumn 类并定义为 Date.class。但我认为我必须定义将日期(如原始数据)传递给过滤和排序的格式,以便它理解格式并正常工作。
我看到 JIDE Autofiltering 中的默认日期格式是 '07-Apr-2016'。我尝试将我的数据转换为相同的格式,但没有运气。如果我尝试过滤日期,它会抛出(未知来源)异常。我认为它不理解我的日期格式。覆盖日期列的类时如何定义日期格式?
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
java.util.Date cannot be cast to java.lang.String
at java.lang.String.compareTo(Unknown Source)
at com.jidesoft.filter.LessThanFilter.isValueFiltered(Unknown Source)
at com.jidesoft.grid.FilterableTableModel.shouldBeFiltered(Unknown Source)
这是我的覆盖 DefaultTableModel 的 TableModel 类。
import javax.swing.table.*;
import java.util.Date;
class MyTableModel extends DefaultTableModel {
public MyTableModel(Object rowData[][], Object columnNames[]) {
super(rowData, columnNames);
}
@Override
public Class getColumnClass(int col) {
switch (col){
case 0:
return Integer.class;
case 1: case 2: case 9:
case 10: case 33:
return String.class;
case 3:
return Date.class;
default:
return Double.class;
}
}
@Override
public boolean isCellEditable(int row, int col) {
switch (col){
case 28: case 29: case 30: case 31: case 32:
return true;
default:
return false;
}
}
}