在groovy中重写java方法时出现问题

在groovy中重写java方法时出现问题,java,groovy,Java,Groovy,我正在处理一个jTable,希望使用setAutoCreateRowSorter(true)并为defaultTableModel对其进行排序。在这种情况下,我的代码是Java和Groovy的混合体(我更喜欢简单Java,因为我的编程技能非常基础,但这不是一个选项…) 表起作用,我可以得到排序,但在带有整数和浮点数的列上,排序是不正确的,因为项被视为字符串。从JavaDoc我了解到我需要重写getColumn类。现在,在Java中执行此操作将非常简单,类似于: public Class getC

我正在处理一个jTable,希望使用setAutoCreateRowSorter(true)并为defaultTableModel对其进行排序。在这种情况下,我的代码是Java和Groovy的混合体(我更喜欢简单Java,因为我的编程技能非常基础,但这不是一个选项…)

表起作用,我可以得到排序,但在带有整数和浮点数的列上,排序是不正确的,因为项被视为字符串。从JavaDoc我了解到我需要重写getColumn类。现在,在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…”开头的“未知类型:Method_Def”显示出来

我不知道如何解决这个问题,并且认为它一定与我必须使用的groovy 1.57的内部类限制有关,所以我认为我是用groovy编写的,我对语法和如何正确操作感到困惑。我环顾四周,试图复制我发现的例子:

def s = [getColumnClass: {int column -> {if (column ==n) return Integer.class;} 
else {return String.class;} } ] as Class 
这不起作用,我显然犯了错误


如何修复Java代码以不获取“未知类型Method_def”,或者通过将该代码转换为groovy代码来修复它?两者都可以,我将非常感激……

我不知道为什么您需要在Groovy中这样做。Java代码非常好,实际上Groovy编译成Java字节码

您是否尝试使用问题中显示的Java代码?

尝试以下方法:

def model = [getColumnClass:{col -> if(col==2) return Integer.class; else return String.class;}] as TableModel
您需要将
用作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) ;

您好,该系统是用groovy编写的,正如您所说的,它应该可以工作,但是对于java代码,我在“public Class getColumnClass…”的开头得到了“Unknown Type:Method_Def”。我想如果用groovy写的话,它是可以修复的…谢谢。我不再得到错误,但我仍然得到字符串排序,而不是指定列中的整数。这是一种方法(在迭代模拟中):
DefaultTableModelScores=new DefaultTableModel()JTable tableS=new JTable()modelScores.setRowCount(0)def model=[getColumnClass:{col->if(col==2)返回Integer.class;else返回String.class;}]作为TableModel tableS.SetModelScores(modelScores);tableS.setAutoCreateRowSorter(true)//和modelScores.addRow要添加数据
我是否应该将def model更改为def modelScores?当我这样做的时候,我会遇到问题addRow@dogpane作品很有魅力:-)非常感谢,你让我开心!