我在JavaFx中编写了一个显示旋转RGB立方体的应用程序。在JFrame中选择JMenuBar中的选项后,我不会运行此应用程序。我尝试过这样的事情:
java.lang.RuntimeException: Error: class grafika1.MyMenu is not a subclass of javafx.application.Application
但它抛出:
parser.add_argument("--nb", help="show number", action='store_true')
parser.add_argument("--md", help="Create xyz file", action='store_true')
parser.add_argument("--xsf", help="Create xsf file for md(default is xyz)"
, action='store_true')
感谢您的建议。
答案 0 :(得分: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);