JFXPanel (original) (raw)
Jeff Martin jeff at reportmill.com
Fri Dec 21 06:28:39 PST 2012
- Previous message: JFXPanel
- Next message: JFXPanel
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: JFXPanel
- Next message: JFXPanel
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]