2016-03-12 19 views
0

我已經在JavaFx中編寫了應用程序,它顯示了旋轉的RGB多維數據集。我不想在JFrame中的JMenuBar中選擇選項後運行此應用程序。我tryed是這樣的:從JFrame啓動JavaFxApplication

if(e.getSource()== showRGBCube){ 
     cubedemo.CubeDemo.launch(); 
    } 

但它拋出:

java.lang.RuntimeException: Error: class grafika1.MyMenu is not a subclass of javafx.application.Application 

感謝意見。

回答

0

你可以做

Application.launch(CubeDemo.class); 

但請注意,你只能在JVM的生命週期中執行launch(...)一次(所以,如果用戶選擇你的菜單項的第二次,它會拋出異常)。

如果您想要在swing應用程序中顯示JavaFX用戶界面,支持的方法是使用JFXPanel,您可以將其直接放入JFrame。所以,你會做這樣的事情:

public class CubeDemo { 

    private final Parent view ; 

    public CubeDemo() { 
     view = new BorderPane(); // or any other kind of pane... 
     // set up ui, register event handlers, etc etc 
    } 

    public Parent getView() { 
     return view ; 
    } 
} 

,您仍然可以創建獨立的JavaFX應用程序(如果需要)有:

public class CubeDemoApp extends Application { 
    @Override 
    public void start(Stage primaryStage) { 
     CubeDemo cubeDemo = new CubeDemo(); 
     Scene scene = new Scene(cubeDemo.getView()); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 

,並在您的Swing應用程序,你可以這樣做:

JFXPanel jfxPanel = new JFXPanel(); 
JFrame frame = new JFrame(); 
frame.add(jfxPanel); 
frame.setSize(...); 
Platform.runLater(() -> { 
    CubeDemo cubeDemo = new CubeDemo(); 
    Scene scene = new Scene(cubeDemo.getView()); 
    jfxPanel.setScene(scene); 
}); 
frame.setVisible(true);