JavaFX2 的TableView具有“用户在运行时对列重新排序”的功能。我想为我的应用程序中的一个特定表禁用此功能。
查看 API 文档,没有明显的 API 挂钩。但是,有columns
- 属性。根据文档,它代表
作为此 TableView 一部分的 TableColumns。当用户重新排序 TableView 列时,此列表将更新以反映当前的视觉排序。
希望我至少能够在更改发生后重置更改,我尝试添加一个侦听器以在事后重置更改。
import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class TableTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
TableView tableView = new TableView();
tableView.getColumns().setAll(new TableColumn(), new TableColumn());
tableView.getColumns().addListener(new ListChangeListener() {
@Override
public void onChanged(Change change) {
if (change.wasPermutated()){
change.reset();
}
}
});
stage.setScene(new Scene(tableView));
stage.show();
}
}
但是,IllegalStateException
当我请求wasPermutated
.
有没有办法防止重新排序,或者至少以编程方式恢复它?