RFR: JDK-8305248: TableView not rendered correctly after column is made visible if fixed cell size is set

Marius Hanl mhanl at openjdk.org
Thu Mar 30 22:09:30 UTC 2023


On Thu, 30 Mar 2023 21:01:22 GMT, Andy Goryachev <angorya at openjdk.org> wrote:

>> The determined `prefWidth` of a `TableCell` could be `0.0` when a `fixedCellSize` is set.
>> This happened because the `TableCell` may not have a skin since it was never added to the scene graph yet.
>> 
>> The fix is to make sure we get the `prefWidth` after the `TableCell` was added to the scene graph.
>> That is also the reason why the problem only happened the first time and never again after (skin is then already created).
>
> modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableRowSkinBase.java line 358:
> 
>> 356:                 // Note: We have to determine the pref width here because the add operation above may trigger the skin
>> 357:                 // creation first, which is what makes it possible to get a correct value here in the first place.
>> 358:                 width = tableCell.prefWidth(height);
> 
> I wonder if it's safe to move this call (one one after else:430) before the if statement on line 352?

I'm not sure if I understand correctly: You mean call `tableCell.prefWidth(height)` above?
I chose this way so we always call `tableCell.prefWidth(height)` just once, never twice.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1077#discussion_r1153835648


More information about the openjfx-dev mailing list