我想在表视图中自定义表头。此示例在javaFx8中工作正常。
TableViewSkin<?> skin = ( TableViewSkin<?> )getSkin();
TableHeaderRow tableHeader = skin.getTableHeaderRow();
NestedTableColumnHeader rootHeader = tableHeader.getRootHeader();
tableHeader.setReordering( false );
现在,我通过所有的拼图更改将jre更改为Java 10,以便不再能够访问所有内部api。因此,方法getTableHeaderRow()/ getRootHeader()/ setReordering()现在是私有的,因此访问它们的唯一方法是通过反射,我不想使用它,因为我不是它们的朋友。
那么有没有办法自定义JavaFx10中的表头?
在我看来,Oracle进行这些更改很容易,但是它们没有给我们开发人员提供使用新的api解决此类问题的解决方案,它们只是将所有内容设为私有或受保护。
[我们正在做很多自定义控件,并使用了很多“内部” api,现在我们投入巨大的精力来运行从Java 8到Java 10的良好工作代码。
[skin.getTableHeaderRow()
是protected access
,但我在某处看到了这个:
TableHeaderRow headerRow = (TableHeaderRow) tableView.lookup("TableHeaderRow");