2016-10-31 425 views
0

我創建了一個swing GUI和一個使用JavaFX的圖形。我想通過單擊擺動GUI上的按鈕打開圖形。我的代碼如下。感謝您的幫助。如何從JavaSwing GUI打開JavaFX GUI?

這是我必須從擺動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); 
    } 
} 

回答

4

Application的類表示一個JavaFX的應用。由於您正在編寫Swing應用程序(嵌入了JavaFX內容),因此創建Application子類是沒有意義的。

此外,強烈建議而不是在同一應用程序中同時使用JavaFX Stage和Swing JFrame。您應該將JavaFX內容放置在JFXPanel中,並在JFrame中顯示JFXPanel。你必須要小心服從工具包線程限制:像往常一樣,Swing組件必須可以在AWT事件調度線程上創建和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); 
    }  
});