JavaFX ListView Sortieren

Ich habe eine ListView in meiner Anwendung, und ich die Einträge sortiert werden sollen.
Ich will auch auf die Liste, um automatisch zu Sortieren, wenn ein neuer Eintrag Hinzugefügt wird.

Dafür verwende ich eine SortedList. Die Java-API sagt: "Alle Veränderungen in der ObservableList weitergegeben werden sofort auf der SortedList.".

Wenn ich mit meinem code die Ausgabe der Befehlszeile ist genau das, was ich erwarte.
Aber die ListView ist nicht sortiert.

Wie kann ich dies tun? Danke!

public class Test extends Application
{
public static final ObservableList names = FXCollections.observableArrayList();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
final ListView listView = new ListView(names);
listView.setPrefSize(200, 250);
listView.setEditable(true);
names.addAll("Brenda", "Adam", "Williams", "Zach", "Connie", "Donny", "Lynne", "Rose", "Tony", "Derek");
listView.setItems(names);
SortedList<String> sortedList = new SortedList(names);
sortedList.setComparator(new Comparator<String>(){
@Override
public int compare(String arg0, String arg1) {
return arg0.compareToIgnoreCase(arg1);
}
});
for(String s : sortedList)
System.out.println(s);
System.out.println();
names.add("Foo");
System.out.println("'Foo' added");
for(String s : sortedList)
System.out.println(s);
StackPane root = new StackPane();
root.getChildren().add(listView);
primaryStage.setScene(new Scene(root, 200, 250));
primaryStage.show();
}
}

Befehl line-Ausgang:

Adam
Brenda
Connie
Derek
Donny
Lynne
Rose
Tony
Williams
Zach
'Foo' added
Adam
Brenda
Connie
Derek
Donny
Foo    <--
Lynne
Rose
Tony
Williams
Zach
Schreibe einen Kommentar