проблема переопределения Java-метода в Groovy - PullRequest
1 голос
/ 21 февраля 2011

Я работаю над jTable и хочу использовать setAutoCreateRowSorter (true) и отсортировать его для defaultTableModel. Мой код представляет собой смесь Java и Groovy, учитывая обстоятельства (я предпочитаю простой Java, так как мои навыки программирования очень просты, но это не вариант ...).

Таблица работает, и я могу получить сортировку, но для столбцов с целыми числами и числами с плавающей точкой сортировка некорректна, поскольку элементы рассматриваются как String. Из JavaDoc я понимаю, что мне нужно переопределить getColumnClass. Теперь сделать это на Java будет легко и что-то вроде:

public Class getColumnClass(int column) {
   if (column == 2) { //2 is a column with integers
   return Integer.class;
   } else {return String.class;
   }    
}

Когда я пишу выше, "Unknown Type: Method_Def" в начале "public Class getColumnClass ..." обнаруживается.

Я не знаю, как это исправить, и подумал, что это должно быть связано с внутренними ограничениями класса 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? Оба сделают, и я буду благодарен ...

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Попробуйте:

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) ;
0 голосов
/ 21 февраля 2011

Я не уверен, почему вам нужно сделать это в Groovy.Java-код отлично работает, на самом деле Groovy компилируется в байт-код Java.

Вы пытались использовать только тот код Java, который показан в вашем вопросе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...