JavaFX 9/10不再可能覆盖TableView.resizeColumnToFitContent

时间:2018-05-29 12:01:59

标签: java javafx tableview java-9 java-10

在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,但也许有更好的方法?

1 个答案:

答案 0 :(得分:1)

如果你想覆盖这个方法,为什么你不像TableSkinUtils那样实现自己的resizeColumnToFitContent?