2016-10-31 5 views
0

Ich erstellte eine Swing-GUI und ein Diagramm mit JavaFX. Ich möchte das Diagramm öffnen, indem ich auf eine Schaltfläche auf der Swing-GUI klicke. Mein Code ist unten. Danke für Ihre Hilfe.Wie kann ich eine JavaFX GUI von JavaSwing GUI öffnen?

Das ist, was ich die FX GUI von der Swing GUI öffnen muss.

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

FX Klasse

public class Test extends Application { 

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

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

Antwort

4

Die Application-Klasse stellt eine JavaFX-Anwendung. Da Sie eine Swing-Anwendung (mit eingebettetem JavaFX-Inhalt) schreiben, macht es keinen Sinn, eine Application-Unterklasse zu erstellen.

Zusätzlich ist es sehr nicht empfohlen beide JavaFX Stage s zu nutzen und JFrame s in der gleichen Anwendung Schwingen. Sie sollten den JavaFX-Inhalt in eine JFXPanel setzen und die JFXPanel in einer JFrame anzeigen. Sie müssen vorsichtig sein, um die Threading-Einschränkungen von sowohl Toolkits zu befolgen: Swing-Komponenten müssen im AWT-Ereignisversand Thread erstellt werden, und JavaFX-Komponenten müssen auf dem JavaFX-Anwendung Thread erstellt werden. Dies ist alles im Detail in der JFXPanel documentation abgedeckt, aber im Wesentlichen:

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); 
    }  
}); 
Verwandte Themen