JavaFX 中关闭一个 Stage 窗口后重新打开该窗口时仍然显示之前窗口的内容

在JavaFX中,可以通过保存Stage的场景(Scene)对象来实现窗口关闭后再打开。关闭时,利用setOnCloseRequest()设置监听器保存场景;重新打开时,创建新Stage并设置保存的场景。如果场景数据有更新,需在关闭时同步数据,以确保再次打开时显示最新内容。
摘要由CSDN通过智能技术生成

如果你想在 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` 成员变量中。

需要注意的是,如果你在重新打开窗口时更新了场景中的数据,那么在关闭窗口时也需要相应地更新相关数据。否则,在重新打开窗口时,你可能会看到保存的数据而不是最新的数据。
 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值