且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何防止TableView在javaFX 8中进行TableColumn重新排序?

更新时间:2022-12-12 11:25:38

花了半天时间来解决问题.也许我的调查对其他人可能有用. 可以使用一些技巧来禁用列重新排序.步骤如下:

Spent half of a day trying to solve the problem. Maybe my investigation can be useful for someone else. It's possible to disable column reordering using some hacks. And here're the steps:

  1. 获取表头.可以按照以下说明进行操作: https://***.com/a/12465155
  2. 将更改事件侦听器添加到reorderingProperty中,从而将重新排序设置为false.

完整代码在这里:

tableView.widthProperty().addListener(new ChangeListener<Number>()
{
    @Override
    public void changed(ObservableValue<? extends Number> source, Number oldWidth, Number newWidth)
    {
        TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");
        header.reorderingProperty().addListener(new ChangeListener<Boolean>() {
            @Override
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                header.setReordering(false);
            }
        });
    }
});

我不确定该解决方案的副作用,但是快速测试表明该解决方案效果很好.

I'm not sure about side effects of this solution, but quick tests show that solution works well.