[如今如何在JavaFX 10中从TableView获取TableHeaderRow?

问题描述 投票:0回答:1

我想在表视图中自定义表头。此示例在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的良好工作代码。

javafx tableview jigsaw java-10 tableheader
1个回答
0
投票

[skin.getTableHeaderRow()protected access,但我在某处看到了这个:

TableHeaderRow headerRow = (TableHeaderRow) tableView.lookup("TableHeaderRow");
© www.soinside.com 2019 - 2024. All rights reserved.