Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx:默认情况下对TableView排序_Java_Sorting_Javafx_Tableview - Fatal编程技术网

javafx:默认情况下对TableView排序

javafx:默认情况下对TableView排序,java,sorting,javafx,tableview,Java,Sorting,Javafx,Tableview,我正在开发一个小游戏,它有一个由javafxTableView显示的高分列表。我已经创建了一个子类HighscoreTableView扩展了TableView,它是一个TableView节点,可以自动创建我需要的TableColumns,并用构造数据填充它们 我希望该表在初始化时按默认列排序。我添加了以下代码行: duration.setSortType(TableColumn.SortType.DESCENDING); this.getSortOrder().add(duration); du

我正在开发一个小游戏,它有一个由javafx
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())
to
this.getItems().clear后跟
this.getItems().addAll(列表)
我认为要使排序工作,TableView的
属性中的列表必须是
SortedList
,并且
比较器
属性绑定到其中一个TableView。这可能是初始值的情况,但需要重置它。尝试更改
this.setItems(list.getObservableList())
to
this.getItems().clear后跟
this.getItems().addAll(列表)