Scott Palmer swpalmer at gmail.com
Fri Dec 21 06:47:12 PST 2012

Just try it without the "AndWait"  It will block the events getting to the JFXPanel anyway because the dialog is modal on top of the Swing parent.


On 2012-12-21, at 9:28 AM, Jeff Martin <jeff at reportmill.com> wrote:

> 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