我已经查看了文档,但我仍然不明白第一个方法正在等待什么以及它如何影响阶段。一些展示两者之间差异的有用示例将不胜感激。
小智 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()
,该方法将不会返回并等到您关闭内部阶段才能继续。当您关闭内部舞台时,您才会看到控制台上出现“完成”。