在 Java FX 中,我想在排序的 TableView 中显示这个模型:
public class ProfilZuordnungTableRowModel {
private int id;
private double kundenwert;
private String kundenwertFormatted;
private BooleanProperty selected; }
我想将表格列排序与“Kundenwert”列集成。显示的值应该是属性“kundenwertFormatted”(字符串),并且应该使用属性“kundenwert”(双)进行排序。
所以我写了一个比较器:
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());
有任何想法吗?