JavaFX:初级阶段可见性和多个独立阶段

时间:2017-01-14 16:30:23

标签: java javafx

我想在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的构造函数。

1 个答案:

答案 0 :(得分:1)

您还没有发布完整的示例,因此很难确定发生了什么,但我怀疑当您的start()方法退出时,JavaFX工具包正在关闭。因此,没有运行FX应用程序线程来执行您在Platform.runLater()中提供的可运行程序。尝试拨打

Platform.setImplicitExit(false);

start()方法中。

相关问题