2
我在我的應用程序中有一個ListView,我想排序條目。 我也希望列表自動排序,如果添加一個新的條目。JavaFX排序ListView
爲此,我使用SortedList。 Java API說:「ObservableList中的所有更改立即傳播到SortedList。」。
當我在下面運行我的代碼時,命令行的輸出正是我所期望的。 但是ListView沒有排序。
我該怎麼做?謝謝!
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();
}
}
命令行輸出:
Adam
Brenda
Connie
Derek
Donny
Lynne
Rose
Tony
Williams
Zach
'Foo' added
Adam
Brenda
Connie
Derek
Donny
Foo <--
Lynne
Rose
Tony
Williams
Zach
哦見鬼去吧!我認爲這是行不通的,因爲我總是得到一個UnsupportedOperationException,因爲我向sortedList添加了新條目。 謝謝! –