gpt4 book ai didi

listview - JavaFX 排序 ListView

转载 作者:行者123 更新时间:2023-12-01 09:21:54 25 4
gpt4 key购买 nike

我的应用程序中有一个 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

最佳答案

您需要使用 SortedListListView . IE。做

    final ListView listView = new ListView();
listView.setPrefSize(200, 250);
listView.setEditable(true);

names.addAll("Brenda", "Adam", "Williams", "Zach", "Connie", "Donny", "Lynne", "Rose", "Tony", "Derek");

SortedList<String> sortedList = new SortedList(names);
listView.setItems(sortedList);

关于listview - JavaFX 排序 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27711923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com