我想在javafx中从CLI控制台创建我想要的多个阶段,并且所有阶段彼此独立。我知道只有一个应用程序实例,这就是我做的原因:
public class BaseApplication extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
//we do nothing with this stage.
}
}
舞台的课程:
public class SomeStage extends State(){
public SomeStage(){
...
show();
}
}
这是根据CLI命令运行的代码:
Platform.runLater(()->{
SomeStage someStage=new SomeStage();
});
但是,使用此代码我只能创建一个SomeStage实例。如果在BaseApplication中我执行primaryStage.show();
,那么我可以创建SomeStage的N个实例,但仅当primaryStage可见时。如何解释它并从初级阶段解决这种依赖?
的修改
我发现当初级阶段不可见并且我想创建SomeStage的第二个实例时,不会调用Platform.runLater。我的意思是
System.out.println("Point 1");
Platform.runLater(()->{
System.out.println("Point 2");
SomeStage someStage=new SomeStage();
});
我只在屏幕上看到Point 1
,并且没有调用SomeStage的构造函数。
答案 0 :(得分:1)
您还没有发布完整的示例,因此很难确定发生了什么,但我怀疑当您的start()
方法退出时,JavaFX工具包正在关闭。因此,没有运行FX应用程序线程来执行您在Platform.runLater()
中提供的可运行程序。尝试拨打
Platform.setImplicitExit(false);
在start()
方法中。