如何防止用户更改 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" .../> 以防止用户更改排序顺序。