La clasificación de columnas de la tabla Java FX con Comparator no funciona
En Java FX me gustaría mostrar este modelo en una vista de tabla ordenada:
public class ProfilZuordnungTableRowModel {
private int id;
private double kundenwert;
private String kundenwertFormatted;
private BooleanProperty selected; }
Me gustaría integrar unclasificación de la columna de la tabla con la columna "Kundenwert". El valor mostrado debe ser el atributo "kundenwertFormatted" (String) y para clasificar el atributo "kundenwert" (doble) debe utilizarse.
Así que escribí un comparador:
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;
}
}
A mi entender, este comparador debe usarse de la siguiente manera:
TableColumn kundenwertColumn = new TableColumn();
kundenwertColumn.setText("Kundenwert");
kundenwertColumn.setCellValueFactory(new PropertyValueFactory("kundenwertFormatted"));
kundenwertColumn.setComparator(new ProfilZuordnungTableRowModelComparator());
Pero cuando intento ordenar por la columna "Kundenwert" obtengo la siguiente excepción:
java.lang.ClassCastException: java.lang.String cannot be cast to model.ProfilZuordnungTableRowModel
at dialog.TableCellFactorySample$ProfilZuordnungTableRowModelComparator.compare(TableCellFactorySample.java:53)
que apunta a esta línea:
kundenwertColumn.setComparator(new ProfilZuordnungTableRowModelComparator());
¿Algunas ideas?