내 응용 프로그램에 ListView가 있는데이 항목을 정렬하려고합니다. 또한 새 항목이 추가되면 목록에서 자동으로 정렬되기를 원합니다.JavaFX sort 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
을 지옥 오! sortedList에 새 항목을 추가했기 때문에 항상 UnsupportedOperationException이 발생했기 때문에 작동하지 않을 것이라고 생각했습니다. 감사합니다 !!! –