JFXPanel
Jeff Martin
jeff at reportmill.com
Fri Dec 21 06:28:39 PST 2012
So I'm kind of stuck - are we saying there is currently no way to run a modal dialog box from an FXApplicationThread in a JFXPanel in a Swing application?
I already tried a JavaFX based modal dialog - it doesn't suspend Swing events and the window doesn't stay on top and I can't figure out how to center it on the Scene in the JFXPanel (scene.getWindow() doesn't return valid bounds info).
jeff
On Dec 21, 2012, at 3:41 AM, Anthony Petrov <anthony.petrov at oracle.com> wrote:
> You should never perform anything of "AndWait" kind on a GUI event thread. This applies to any GUI toolkit, be it Java-based (e.g. Swing or FX), or a native API (e.g. WinAPI or Cocoa). Never.
>
> The only case when you may "block" an event thread is when you show a modal dialog using an API of the GUI toolkit on the event thread of which you're currently running, or when you're starting a DragAndDrop operation from an event handler. In both these cases the toolkit will run a nested event loop for you so that GUI events are properly processed during the blocking operation, and therefore your application won't appear "frozen" to the end user.
>
> I realize that you want to display a JOptionPane modally from FX perspective, but unfortunately this isn't quite possible. You should either use an FX modal dialog for this purpose, or display the modal JOptionPane from Swing code.
>
> --
> best regards,
> Anthony
>
> On 12/21/2012 6:23, Jeff Martin wrote:
>> Is it possible to run a JOptionPane from the FXApplicationThread with SwingUtilities.invokeAndWait()?
>> I tried it and it hangs in CCursorManager.nativeGetCursorPosition() (which I've seen before when I've accidentally run swing code from the FXApplication thread).
>> jeff
>> On Dec 14, 2012, at 10:19 AM, Werner Lehmann <lehmann at media-interactive.de> wrote:
>>> Scott,
>>>
>>> JFXPanel has quite a few issues (look for JFXPanel or Swing in Jira). Among those is the filechooser problem. It is probably just one instance of the problem that a JavaFX stage cannot be modal or on top of Swing windows.
>>>
>>> To work around this we have to put JFXPanels in JDialogs. Not really sexy: apart from the overhead in code we know today that we have to touch this again one day to convert the JDialog to a stage.
>>>
>>> Regarding your problem of how to get from a node to the JFXPanel: no idea why you would want to do this. I have a dozen jfxpanels but never needed such a thing. I guess you could extend JFXPanel and add a reference to the fxpanel to some userdata on a node, or something like that.
>>>
>>> Rgds
>>> Werner
>>>
>>> On 14.12.2012 16:39, Scott Palmer wrote:
>>>> I'm trying to migrate more of my app from Swing to JavaFX piece-wise
>>>> via JFXPanels. It's not fun as there are many rough edges. In order
>>>> to work around some of them I am wondering if it is possible to get a
>>>> reference to the JFXPanel if all I have is a Node? I can get the
>>>> Scene's Window, an "Embedded" Window that seems to be the root of a
>>>> lot of problems with popups and dialogs. That seems to be enough to
>>>> determine that the Node is hosted by a JFXPanel, but can I actually
>>>> get the JFXPanel instance?
>>>>
>>>> If there is a way via public APIs that don't rely on me peaking at
>>>> implementation details like com.sun.javafx.stage.EmbeddedWindow?
>>>>
>>>> Along this line… why is it that things like the FileChooser and other
>>>> JavaFX dialogs don't respect the window ordering when used from a
>>>> JFXPanel? They easily flip behind the parent JFrame. I would have
>>>> thought that the correct Window hierarchy in native land could still
>>>> include the native window of the JFrame and that should prevent such
>>>> things.
>>>>
>>>> Scott
More information about the openjfx-dev
mailing list