如何防止用户更改 JavaFX Table 的排序顺序?
How to prevent user from changing sort order of JavaFX Table?
我有一个 JavaFX table,默认排序通过 FXML
<TableView>
<columns>
...
</columns>
<sortOrder>
...
</sortOrder>
</TableView>
每当我添加一行时,我都会使用 table,这正是我想要的。
myTable.getItems().add(...)
myTable.sort()
但是,现在我想阻止用户更改排序顺序。我该怎么做?
我尝试使用 <TableColumn sortable="false" .../>
属性,但如果在我要排序的列上指定,则这些列将不再排序。
Slaw 关于使用 SortedList 的建议非常有效。以下是需要完成的工作:
@FXML
private TableView<MyThing> tableView;
private ObservableList<MyThing> observableList = FXCollections.observableArrayList();
@Override
public void initialize(URL location, ResourceBundle resources) {
SortedList<MyThing> sortedList = observableList.sorted(Comparator.comparing(MyThing::getDate).thenComparing(MyThing::getTime));
tableView.setItems(sortedList);
public void onAdd(MyThing myThing) {
observableList.add(myThing);
然后只需在所有列上使用 <TableColumn sortable="false" .../>
以防止用户更改排序顺序。
我有一个 JavaFX table,默认排序通过 FXML
<TableView>
<columns>
...
</columns>
<sortOrder>
...
</sortOrder>
</TableView>
每当我添加一行时,我都会使用 table,这正是我想要的。
myTable.getItems().add(...)
myTable.sort()
但是,现在我想阻止用户更改排序顺序。我该怎么做?
我尝试使用 <TableColumn sortable="false" .../>
属性,但如果在我要排序的列上指定,则这些列将不再排序。
Slaw 关于使用 SortedList 的建议非常有效。以下是需要完成的工作:
@FXML
private TableView<MyThing> tableView;
private ObservableList<MyThing> observableList = FXCollections.observableArrayList();
@Override
public void initialize(URL location, ResourceBundle resources) {
SortedList<MyThing> sortedList = observableList.sorted(Comparator.comparing(MyThing::getDate).thenComparing(MyThing::getTime));
tableView.setItems(sortedList);
public void onAdd(MyThing myThing) {
observableList.add(myThing);
然后只需在所有列上使用 <TableColumn sortable="false" .../>
以防止用户更改排序顺序。