Java FX Stage 类中的 showandwait() 和 show() 有什么区别?

8 java javafx

我已经查看了文档,但我仍然不明白第一个方法正在等待什么以及它如何影响阶段。一些展示两者之间差异的有用示例将不胜感激。

小智 8

考虑下面的例子

public class Demo extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    
    @Override
    public void start(Stage stage) {
        stage.setScene(new Scene(new Label("Demo")));
        stage.show();
        
        Stage inner = new Stage(){{setScene(new Scene(new Label("Inner"))); }};
        inner.show(); // Try replacing with showAndWait
        System.out.println("Done");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果执行此版本,inner.show()将显示第二阶段并立即返回,因此您将Done在控制台上看到。

如果替换inner.show()inner.showAndWait(),该方法将不会返回并等到您关闭内部阶段才能继续。当您关闭内部舞台时,您才会看到控制台上出现“完成”。