gpt4 book ai didi

JavaFx 启动应用程序并继续

转载 作者:行者123 更新时间:2023-11-30 03:25:07 27 4
gpt4 key购买 nike

我有以下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 应用程序正常且安全吗?

最佳答案

我不确定您要做什么,但是 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 线程上运行多个应用程序的启动方法来从主线程运行多个应用程序。但是,您将丢失 initstop 生命周期方法,因为您没有使用 Application.launch

关于JavaFx 启动应用程序并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com