gpt4 book ai didi

java - 如何以编程方式对 TableView 进行排序?

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:33 25 4
gpt4 key购买 nike

我希望默认对 TableView 的某一列进行排序。我该怎么做?我尝试执行 column.setSortType(SortType.ASCENDING);,并将其放入 runLater 调用中。我查看了 JavaDocs 之类的东西,我所看到的可能感兴趣的是特殊的 setSortPolicy 方法。

最佳答案

要执行“一次性”排序,调用

tableView.getSortOrder().setAll(...);

传入要对数据进行排序的 TableColumn

要使排序在列表中的项目发生变化时仍然存在,请创建一个 SortedList并将其传递给表的 setItems(...) 方法。 (要更改项目,您仍将操作基础列表。)

例如,使用通常的 contact table example你可以这样做:

TableView<Person> table = new TableView<>();
TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
firstNameCol.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
TableColumn<Person, String> lastNameCol = new TableColumn<>("
Last Name");
firstNameCol.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty());

ObservableList<Person> data = FXCollections.observableArrayList();

SortedList<Person> sortedData = new SortedList<>(data);

// this ensures the sortedData is sorted according to the sort columns in the table:
sortedData.comparatorProperty().bind(table.comparatorProperty());

table.setItems(sortedData);

// programmatically set a sort column:
table.getSortOrder().addAll(firstNameCol);

// note that you should always manipulate the underlying list, not the sortedList:
data.addAll(new Person(...), new Person(...));

关于java - 如何以编程方式对 TableView 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889111/

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