gpt4 book ai didi

java - 将 SortedList 比较器绑定(bind)到 TableView 比较器会删除排序

转载 作者:行者123 更新时间:2023-11-30 02:30:19 26 4
gpt4 key购买 nike

我有一个 SortedList,它支持 TableView 中的数据。我想在查询数据库后按特定列对数据进行排序,但我想保留 TableView 的交互式排序功能。我的代码:

sortedData = new SortedList<>(data, new TableSort(sortIndex));
sortedData.comparatorProperty().bind(Table.comparatorProperty());
Table.setItems(sortedData);

但是,当我将 SortedList 比较器绑定(bind)到 TableView 时,原始比较器 TableSort 被忽略,并且数据显示为未排序。如果我选择不绑定(bind)比较器,我的数据会正确排序,但无法执行交互式列排序。我怎样才能在这里两全其美?感谢您的帮助。

最佳答案

因此,如果您想在将它们放入表中之前对它们进行初步排序,这非常简单。我有一个类 TestRow ,它保存表中的信息,并实现 Comparable 接口(interface):

package stackoverflow;

import javafx.beans.property.SimpleStringProperty;

public class TestRow implements Comparable<TestRow> {

private SimpleStringProperty name;
private SimpleStringProperty age;

public TestRow(String name, String age) {
this.name = new SimpleStringProperty(name);
this.age = new SimpleStringProperty(age);
}

public String getName() {
return name.get();
}

public SimpleStringProperty nameProperty() {
return name;
}

public String getAge() {
return age.get();
}

public SimpleStringProperty ageProperty() {
return age;
}

@Override
public int compareTo(TestRow that) {
return this.getName().compareTo(that.getName());
}

}

然后在我的 Controller 中我简单地添加了两行:

TestRow first = new TestRow("Steve", "20");
TestRow second = new TestRow("Mike", "22");
ObservableList<TestRow> data = FXCollections.observableArrayList(Arrays.asList(first, second));

您可以简单地调用Collections.sort(data);,然后您就可以完成您已经拥有的其余部分。

关于java - 将 SortedList 比较器绑定(bind)到 TableView 比较器会删除排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44439911/

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