JFXPanel ignores size change of root node
lehmann at media-interactive.de
Mon Dec 17 11:09:01 PST 2012
On 17.12.2012 13:49, Artem Ananiev wrote:
> At the API level we have code that calculates Scene's preferred size and
> resize Stage so it perfectly matches this Scene. It's only done a) when
> the window is being shown b) if the window size was not set explicitly.
> This code can be extracted into a public method to be called by
> application at arbitrary moment, close to AWT's Frame.pack().
> Jasper, Richard, what do you think about this idea?
I suggest to clarify this in the JFXPanel javadoc. Even with your
comment in RT-13758...
> As for manual/automatic resizing, it's controlled by AWT/Swing
> LayoutManager. If you or your LayoutManager set JFXPanel size
> explicitly, FX scene is forced to that size, it's a kind of manual
> mode. Automatic mode is for window managers that take component's
> preferred size into consideration (e.g. FlowLayout).
...I had no clue that "automatic mode" refers to initial scene sizing only.
Having a method to do this sizing on demand would be nice but I guess
most people needing this would observe the root node's size anyway and
then demand a JFXPanel update when it changes. Also, Group already has a
boolean property autoSizeChildren (true by default it seems). It would
be nice to have something like this on the JFXPanel as well.
> invalidate(), as well as JComponent.revalidate(), is thread safe.
Recently we've been burned by deadlocks on Mac: one thread would hold a
treelock and wait for some other lock in native Mac code. The other
thread vice versa. Admittedly we were doing evil things, like AWT
force-painting an FX node (or changing the mouse cursor to hourglass)
while the EDT is blocked but still... ;-)
> In general, it looks like a bug, we shouldn't depend on the timings.
> Please, file a new bug to JavaFX JIRA, but I can't guarantee it will be
> fixed in a few hours :)
Well, I'd take a fix for 2.2.6 as well :) Currently resetting the
scene, waiting 50ms, then invalidating seems to work. On my machine at
least. Filed bug RT-27053.
More information about the openjfx-dev