如何从JavaSwing GUI打开JavaFX GUI?

时间:2016-10-31 13:37:20

标签: java swing user-interface javafx

我使用JavaFX创建了一个swing GUI和一个图形。我想通过单击swing GUI上的按钮打开图表。我的代码如下。谢谢您的帮助。

这就是我必须从swing GUI中打开FX GUI。

btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        Test Graph = new Test();
        Graph.GrpahScreen();
    }       
});
  

FX类

public class Test extends Application {

    @Override 
    public void start(Stage stage) {
        // TODO
    }

    public static void main(String args []) {
        launch(args);
    }
}

1 个答案:

答案 0 :(得分:4)

Application类表示JavaFX应用程序。由于您正在编写Swing应用程序(其中嵌入了JavaFX内容),因此创建Application子类是没有意义的。

此外,强烈建议在同一应用程序中同时使用JavaFX Stage和Swing JFrame。您应该将JavaFX内容放在JFXPanel中,并在JFXPanel中显示JFrame。您需要小心遵守两个工具包的线程限制:像往常一样,在AWT事件派发线程上创建Swing组件必须,并且JavaFX组件必须在JavaFX应用程序线程上创建。 JFXPanel documentation中详细介绍了这一点,但实质上是:

btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        JFrame frame = new JFrame();
        JFXPanel jfxPanel = new JFXPanel();
        Platform.runLater(() -> {
            Parent root = ... ; // create JavaFX content, can be in a separate class
            Scene scene = new Scene(root);
            jfxPanel.setScene(scene);
        });
        frame.add(jfxPanel);
        frame.setSize(...);
        frame.setVisible(true);
    }       
});