如果你想在 JavaFX 中关闭一个 Stage 窗口后重新打开该窗口,同时仍然显示之前窗口的内容,您可以考虑在窗口关闭时将其场景(Scene)对象保存下来,在重新打开窗口时再次设置它。
具体来说,你可以在关闭窗口时将其当前场景保存到一个成员变量中,例如:
```java
private Scene previousScene;
// ...
stage.setOnCloseRequest(event -> {
// 当窗口关闭时,保存其当前场景
previousScene = stage.getScene();
});
```
在此示例中,我们使用 `setOnCloseRequest()` 方法来设置窗口关闭事件监听器。在该监听器内部,我们获取当前窗口的场景,并将其保存到 `previousScene` 成员变量中。
然后,在重新打开窗口时,你可以将保存的场景重新设置为新窗口的场景,例如:
```java
private void reopenPreviousStage() {
// 创建新的 Stage 对象
Stage newStage = new Stage();
// 配置新的 Stage 对象
newStage.setTitle("Title");
// 如果之前有保存场景,则将其设置为新 Stage 的场景
if (previousScene != null) {
newStage.setScene(previousScene);
} else {
// 否则,创建新的场景并设置为新 Stage 的场景
Scene newScene = new Scene(new BorderPane(), 400, 300);
newStage.setScene(newScene);
}
// 显示新的 Stage 对象并隐藏旧的 Stage 对象
newStage.show();
previousStage.hide();
// 将新的 Stage 对象保存为新的 “previousStage”
previousStage = newStage;
}
```
在此示例中,我们创建了一个新的 Stage 对象,并根据之前是否保存过场景来设置其场景。如果之前保存过场景,就将其设置为新 Stage 的场景;否则,就创建一个新的场景并设置为新 Stage 的场景。最后,我们将新的 Stage 显示出来并隐藏旧的 Stage,同样将新的 Stage 对象保存到 `previousStage` 成员变量中。
需要注意的是,如果你在重新打开窗口时更新了场景中的数据,那么在关闭窗口时也需要相应地更新相关数据。否则,在重新打开窗口时,你可能会看到保存的数据而不是最新的数据。