2016-04-01 5 views
0

Ich habe eine Anwendungen, die ein TableView hostet. Jedes Mal, wenn der Benutzer die Zeilen sortiert nach den Header einer bestimmten Spalte klicken, muss ichAbfangen Sortieren der Elemente eines JavaFX 8 TableView

  1. Speichern Sie die aktuelle Reihenfolge der Elemente,
  2. die eigentliche Sortier Do,
  3. Speichern Sie die neue Reihenfolge der Elemente.

Ich war in der Lage, dies zu erkennen:

this.tableView.sortPolicyProperty().set(t -> { 
     System.out.println("saving source order"); 
     ... // Saving 
     FXCollections.sort(tableView.getItems(), t.getComparator()); 
     System.out.println("saving target order"); 
     ... // Saving 
     return true; 
}); 

Doch diese ClassCastException ziemlich oft wirft. Gibt es eine bessere Möglichkeit, die Artikelpermutationen vor und nach dem Sortieren zu speichern?

Antwort

1

Man könnte sie hören die ListChangeListenerder bessere Weg mit :)

tv.getItems().addListener(new ListChangeListener<T>(){ 
      @Override 
      public void onChanged(javafx.collections.ListChangeListener.Change< 
            ? extends T> c) {   
      while(c.next()){ 
       if(c.wasPermutated()){ 
        System.out.println("is permuated"); 
       } 
      } 
     } 

}); 

Hoffe, es hilft.

+1

Hat es getan. Vielen Dank! :-) – coderodde

Verwandte Themen