javafx:默认情况下对TableView排序
我正在开发一个小游戏,它有一个由javafxjavafx:默认情况下对TableView排序,java,sorting,javafx,tableview,Java,Sorting,Javafx,Tableview,我正在开发一个小游戏,它有一个由javafxTableView显示的高分列表。我已经创建了一个子类HighscoreTableView扩展了TableView,它是一个TableView节点,可以自动创建我需要的TableColumns,并用构造数据填充它们 我希望该表在初始化时按默认列排序。我添加了以下代码行: duration.setSortType(TableColumn.SortType.DESCENDING); this.getSortOrder().add(duration); du
TableView
显示的高分列表。我已经创建了一个子类HighscoreTableView扩展了TableView
,它是一个TableView
节点,可以自动创建我需要的TableColumns
,并用构造数据填充它们
我希望该表在初始化时按默认列排序。我添加了以下代码行:
duration.setSortType(TableColumn.SortType.DESCENDING);
this.getSortOrder().add(duration);
duration.setSortable(true);
this.sort();
其中duration是应定义排序的表列
。当然,它被添加到表视图中。但是,当我创建该HighscoreTableView
的新实例时,它在默认情况下保持未排序,直到用户单击其中一个列标题。这是出乎意料的,因为,并说它应该这样工作。有什么想法吗
有关复制的更多信息:
HighscoreTableView
类由一个HighscoreStage extends Stage
类使用,该类包含一个带有四个选项卡的TabPane
。每个选项卡都包含一个HighscoreTableView
,其中包含从静态data
对象获取的不同数据。数据模型是一个类HighscoreEntry
,其中一个ObservableList
被添加到HighscoreTableView
中。我的完整代码可用。在加载任何数据之前,您正在调用sort()
。相反,您应该在每次向表视图添加/更改数据后调用它。
此外,您还可以使用适当的比较器来包装您的原始支持列表。所有更改将自动传播到视图。在加载任何数据之前,您正在调用sort()
。相反,您应该在每次向表视图添加/更改数据后调用它。
此外,您还可以使用适当的比较器来包装您的原始支持列表。所有更改都将自动传播到视图。我认为,要使排序工作正常,TableView的项
属性中的列表必须是排序列表
,并且比较器
属性绑定到TableView中的一个。这可能是初始值的情况,但需要重置它。尝试更改this.setItems(list.getObservableList())
tothis.getItems().clear代码>后跟this.getItems().addAll(列表)
我认为要使排序工作,TableView的项
属性中的列表必须是SortedList
,并且比较器
属性绑定到其中一个TableView。这可能是初始值的情况,但需要重置它。尝试更改this.setItems(list.getObservableList())
tothis.getItems().clear代码>后跟this.getItems().addAll(列表)代码>