我有以下3行代码:
1 System.out.println("Starting program...");
2 Application.launch((Gui.class));
3 System.out.println("Continuing program...");
问题是当javafx应用程序启动时,第2行之后的代码在我关闭javafx应用程序之前不会执行。当javafx应用程序仍在运行时,启动javafx应用程序和执行第3行的正确方法是什么?
编辑1
我到目前为止找到的唯一解决方案是:
2 (new Thread(){
public void run(){
Application.launch((Gui.class));
}
}).start();
此解决方案对于javafx应用程序是否正常且安全?
答案 0 :(得分:2)
我不确定你要做什么,但是Application.launch
也等待应用程序完成,这就是为什么你没有立即看到第3行的输出。您的应用程序start
方法是您要进行设置的地方。有关详细信息和示例,请参阅the API docs for the Application class。
编辑:如果你想从主线程运行多个JavaFX应用程序,也许这就是你需要的:
public class AppOne extends Application
{
@Override
public void start(Stage stage)
{
Scene scene = new Scene(new Group(new Label("Hello from AppOne")), 600, 400);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args)
{
System.out.println("Starting first app");
Platform.runLater(() -> {
new AppOne().start(new Stage());
});
System.out.println("Starting second app");
Platform.runLater(() -> {
new AppTwo().start(new Stage());
});
}
}
public class AppTwo extends Application
{
@Override
public void start(Stage stage)
{
Scene scene = new Scene(new Group(new Label("Hello from AppTwo")), 600, 400);
stage.setScene(scene);
stage.show();
}
}
通过在JavaFX线程上运行start方法,从主线程运行多个应用程序。但是,您将失去init
和stop
生命周期方法,因为您未使用Application.launch
。