我想在tableview中自定义tableheader。这个例子在javaFx8中工作正常。
TableViewSkin<?> skin = ( TableViewSkin<?> )getSkin();
TableHeaderRow tableHeader = skin.getTableHeaderRow();
NestedTableColumnHeader rootHeader = tableHeader.getRootHeader();
tableHeader.setReordering( false );
现在我使用所有拼图更改将jre更改为Java 10,以便所有内部api都不再可访问。 所以方法getTableHeaderRow()/ getRootHeader()/ setReordering()现在是私有的,所以访问它们的唯一方法是通过反射,我不想使用它,因为我不是他们的朋友。
那么有没有办法在JavaFx10中对tableheader进行cusomize?
在我看来,Oracle很容易做出这些改变,但它们并没有给我们的开发人员一个解决这个问题的解决方案来解决这个问题,他们只是将所有内容设为私有或保护。
我们正在进行大量的自定义控件并使用大量的“内部”API,现在我们已经付出了巨大的努力来将精细的代码从Java 8运行到Java 10。
答案 0 :(得分:0)
skin.getTableHeaderRow()
是protected access
,但我在某处看到了这一点:
TableHeaderRow headerRow = (TableHeaderRow) tableView.lookup("TableHeaderRow");