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.

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

Commit messages:
 - 8154846: SwingNode does not resize when content size constraints are changed

Changes: https://git.openjdk.org/jdk/pull/15960/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15960&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8154846
  Stats: 22 lines in 1 file changed: 4 ins; 18 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/15960.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/15960/head:pull/15960

PR: https://git.openjdk.org/jdk/pull/15960

Reply via email to