JFXPanel

Anthony Petrov anthony.petrov at oracle.com
Mon Dec 24 02:03:49 PST 2012


Yes, this should work just fine. In other words, the FX App Thread is 
irrelevant here. Just show a Swing modal dialog from an event handler on 
the Swing EDT. You can dispatch such an event using the 
EventQueue.invokaLater() from the FX App Thread.

--
best regards,
Anthony

On 12/21/2012 18:47, Scott Palmer wrote:
> 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.
> 
> Scott
> 
> 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