我正在研究jTable,并希望使用setAutoCreateRowSorter(true)并将其排序为defaultTableModel。我的代码是Java&的混合物。 Groovy考虑到了这种情况(我更喜欢简单的java,因为我的编程技巧非常基本,但那不是一个选项......)。
表工作,我可以进行排序,但在具有整数和浮点数的列上,排序不正确,因为项目被视为字符串。从JavaDoc我明白我需要覆盖getColumnClass。现在在Java中执行此操作非常简单,例如:
public Class getColumnClass(int column) {
if (column == 2) { //2 is a column with integers
return Integer.class;
} else {return String.class;
}
}
当我写上面的内容时,“public Class getColumnClass ...”开头出现“Unknown Type:Method_Def”。
我不知道如何解决这个问题,并认为它必须与我必须使用的groovy 1.57的内部类限制有关,所以我认为我在groovy中编写它并且我对语法很困惑以及如何去做正确。我环顾四周,试图复制我发现的例子:
def s = [getColumnClass: {int column -> {if (column ==n) return Integer.class;}
else {return String.class;} } ] as Class
这不起作用,我显然犯了错误。
如何修复Java代码以获取“Unknown type Method_def”或通过将代码转换为groovy代码来修复它?两者都会这样做,我将不胜感激......
答案 0 :(得分:2)
试试这个:
def model = [getColumnClass:{col -> if(col==2) return Integer.class; else return String.class;}] as TableModel
您需要使用as TableModel
,因为您要覆盖TableModel
的方法。
更新:对于DefaultTableModel:
JTable tableS = new JTable() ;
def model = [getColumnClass:{col -> if(col==2) return Integer.class; else return String.class;}] as DefaultTableModel ;
model.setRowCount(0);
tableS.setModel(model);
tableS.setAutoCreateRowSorter(true) ;
答案 1 :(得分:0)
我不确定你为什么需要在Groovy中这样做。 Java代码非常好,实际上Groovy编译为Java字节码。
您是否尝试过使用您在问题中显示的Java代码?