Hi, In one of our customers application we have major problems when embedding JavaFX into SWT (but from my tests the situation is equal for Swing).
In the end all windows (most commonly popup-windows) are affected because they don't have a parent-window assigned and so they can be hidden by the window embedding them - if the window opened is Modal like eg the one from ColorPicker the JavaFX UI is also blocked. To see what I mean just use this snippet below and do the following: * Bring up the DropDown-List * Bring up the custom color dialog * Click somewhere in the JFrame You notice the following: * JavaFX Window is moved behind Swing-Window * JavaFX UI is blocked > package test; > > import javax.swing.JFrame; > > import javafx.application.Platform; > import javafx.embed.swing.JFXPanel; > import javafx.geometry.Pos; > import javafx.scene.Scene; > import javafx.scene.control.ColorPicker; > import javafx.scene.layout.BorderPane; > > public class TestSwingInterop extends JFrame { > > public TestSwingInterop() { > setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); > final JFXPanel fxPanel = new JFXPanel(); > add(fxPanel); > > Platform.runLater(new Runnable() { > @Override > public void run() { > initFX(fxPanel); > } > }); > } > > private static void initFX(JFXPanel fxPanel) { > // This method is invoked on JavaFX thread > Scene scene = createScene(); > fxPanel.setScene(scene); > } > > private static Scene createScene() { > ColorPicker picker = new ColorPicker(); > BorderPane.setAlignment(picker, Pos.TOP_LEFT); > BorderPane p = new BorderPane(picker); > > return new Scene(p); > } > > public static void main(String[] args) { > TestSwingInterop s = new TestSwingInterop(); > s.setBounds(100, 100, 1000, 800); > s.setVisible(true); > } > } I've tested this on Java8 and Java9 but didn't had a chance to run it on the latest master. The problem is that the newly created JavaFX windows don't have the Native-Window as their parent but the EmbeddedStage (who is not bound to a native-window handle). It looks like EmbeddedStage has already been prepared (see getRawHandle() : long) to support something like that in future but com.sun.glass.ui.Window and its subclasses have never been extend to create a window based on a pure long-pointer. The only exception and the reason I guess the strategy would work was used for Applets. Before diving deeper into this I wanted to get a feedback from people who know things better: Does the strategy of passing along the window pointer (eg from SWT, don't know about Swing yet) to Glass and using it as the parent pointer sound like a proper idea? Tom -- Tom Schindl, CTO BestSolution.at EDV Systemhaus GmbH Eduard-Bodem-Gasse 5-7. A-6020 Innsbruck Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck