В Java FX Я хотел бы, чтобы отобразить эту модель в отсортированном TableView:Java FX столбец таблицы сортировки с компаратор не работает
public class ProfilZuordnungTableRowModel {
private int id;
private double kundenwert;
private String kundenwertFormatted;
private BooleanProperty selected; }
Я хотел бы интегрировать столбец таблицы сортировки с колонкой " Kundenwert». Отображаемое значение должно быть атрибутом «kundenwertFormatted» (String) и для сортировки атрибута «kundenwert» (Double).
Так что я написал компаратор:
class ProfilZuordnungTableRowModelComparator implements Comparator<ProfilZuordnungTableRowModel> {
@Override
public int compare(ProfilZuordnungTableRowModel t, ProfilZuordnungTableRowModel t1) {
return t.getKundenwert() < t1.getKundenwert() ? -1 : t.getKundenwert() == t1.getKundenwert() ? 0 : 1;
}
}
В моем понимании это компаратор должен использоваться следующим образом:
TableColumn kundenwertColumn = new TableColumn();
kundenwertColumn.setText("Kundenwert");
kundenwertColumn.setCellValueFactory(new PropertyValueFactory("kundenwertFormatted"));
kundenwertColumn.setComparator(new ProfilZuordnungTableRowModelComparator());
Но при попытке разобраться в колонке «Kundenwert» Я получаю следующее:
java.lang.ClassCastException: java.lang.String cannot be cast to model.ProfilZuordnungTableRowModel
at dialog.TableCellFactorySample$ProfilZuordnungTableRowModelComparator.compare(TableCellFactorySample.java:53)
, который указывает на эту строку:
kundenwertColumn.setComparator(new ProfilZuordnungTableRowModelComparator());
Любые идеи?
Почему вы «kundenwert» и «kundenwertFormatted»? Я думаю, что они избыточны, а форматирование должно выполняться пользовательским интерфейсом, а не моделью. – Katona