RFR: 8154846: SwingNode does not resize when content size constraints are changed [v4]
Prasanta Sadhukhan
psadhukhan at openjdk.org
Thu Oct 12 16:34:06 UTC 2023
On Fri, 6 Oct 2023 07:25:54 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
>> SwingNode does not update its internal cache of Swing pref/max/min height and widths when its JComponent content's corresponding size constraints are updated. As such, it isn't resized to honor those size constraints.
>>
>> JLightweightFrame does install a PropertyChangeListener for "preferredSize", "maximumSize", and "minimumSize" properties, but this only happens via a ContainerListener which is not added until after the content has already been added to the content pane, and since the application cannot call this methods directly as per the documentation for the SwingNode.resize() method: `Applications should not invoke this method directly. If an application needs to directly set the size of the SwingNode, it should set the Swing component's minimum/preferred/maximum size constraints which will be propagated correspondingly to the SwingNode and it's parent will honor those settings during layout.`
>>
>> so the fix is to add the listener as soon as the component is added to the JLightweightFrame's content.
>
> Prasanta Sadhukhan has updated the pull request incrementally with one additional commit since the last revision:
>
> Revalidate component after add
> so tested on windows 11 with your pre-built jdk and the latest fx master branch.
>
> What I see is some kind of behavior that happens when the code is missing repaint() and/or validate(). When the window comes up first, it looks like this - with the button not painted (a solid black block):
>
> 
>
> a mouse over repaints the button (possibly due to hover?), or window resizing repaints the button.
>
> When I then click on the button, I see either 1/4 of the larger button where it is supposed to be, or at the corner, like so: 
>
> resizing a window slightly places the button in the right spot and removes all the artifacts.
>
> All this happens on the primary screen with a 100% scale.
Yes, known issue...please refer [JDK-8298796](https://bugs.openjdk.org/browse/JDK-8298796)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15960#issuecomment-1759964099
More information about the client-libs-dev
mailing list