在JavaFX 8中,可以覆盖TableView.resizeColumnToFitContent
函数。这对我们的目的至关重要,因为它允许我们改进默认默认实现之外的列标题布局方式,以及在较大的表中默认值受到某些影响的情况下调整性能。
在嵌套列标题的上下文中,如何增强布局行为的一个示例。默认情况下,叶列标题的prefWidth根据该列中数据行的最大宽度或叶列标题文本的宽度(以较大者为准)进行设置。但是,如果该叶标题具有一些带有较宽标题文本的父列标题,则会对其进行裁剪并显示省略号。这对我们而言不是理想的,因此我们已更改resizeColumnToFitContent
,因此叶列标题的prefWidth也考虑了其父列标题的prefWidth。
从Java 9及以下版本开始,resizeColumnToFitContent
函数已移至静态位置,从而无法自定义此行为:
http://hg.openjdk.java.net/openjfx/9-dev/rt/rev/53bfdfed5bbf
大约一周前,我写信给负责此更改的作者乔纳森·吉尔斯(Jonathan Giles),但我想他是一个忙碌的人,这已经成为我们和我们计划将产品迁移到Java 10的一个阻碍性问题,所以我想还可以查看社区是否知道我该如何解决。到目前为止,唯一的选择似乎是有些蛮力的方法outlined here,但是也许有更好的方法吗?
最佳答案
如果要覆盖此方法,为什么不像TableSkinUtils中那样实现自己的resizeColumnToFitContent?