JavaFX 程序在关闭 Stage 窗口后尝试重新打开该窗口时崩溃

最近公司要做一个javafx内嵌浏览器的项目在更换浏览器内核后出现窗口关闭后点击图标项目出现闪退的情况,在网上找了一圈都没有找到想要的结果,可能是这个技术太冷门的缘故,故写一个案例仅供参考,不多bb直接上结果;

如果 JavaFX 程序在关闭 Stage 窗口后尝试重新打开该窗口时崩溃,可能是因为您没有正确地管理 Stage 对象的生命周期。

当您关闭一个 Stage 窗口时,这个舞台对象就会被销毁。因此,在您尝试重新打开该窗口之前,您需要先创建一个新的 Stage 对象,然后根据需要对其进行配置和设置。例如:

```java
private Stage previousStage;

// ...

public void start(Stage primaryStage) {
    // 保存主舞台的引用
    previousStage = primaryStage;

    // 其他代码...
}

private void openNewStage() {
    // 创建新舞台
    Stage newStage = new Stage();
    Scene scene = new Scene(new BorderPane(), 400, 300);
    newStage.setScene(scene);

    // 显示新舞台并隐藏旧舞台
    newStage.show();
    previousStage.hide();

    // 保存新舞台为新的 “previousStage”
    previousStage = newStage;
}

private void reopenPreviousStage() {
    // 创建新的 Stage 对象
    Stage newStage = new Stage();

    // 配置新的 Stage 对象,例如设置舞台标题、场景等
    newStage.setTitle("Previous Stage");
    Scene scene = new Scene(new BorderPane(), 400, 300);
    newStage.setScene(scene);

    // 显示新的 Stage 对象并隐藏旧的 Stage 对象
    newStage.show();
    previousStage.hide();

    // 将新的 Stage 对象保存为新的 “previousStage”
    previousStage = newStage;
}

// ...
```

在此示例中,我们使用了 `previousStage` 实例变量来保存主舞台的引用。当打开一个新的 Stage 时,我们将主舞台隐藏,并保存新打开的窗口(即新的 `previousStage`)以备将来使用。在重新打开之前关闭的 Stage 窗口时,我们先创建一个新的 Stage 对象,然后根据需要对其进行配置和设置,最后将其显示并隐藏旧的 Stage 对象。

需要注意的是,如果您没有正确地管理 Stage 对象的生命周期,那么程序可能会出现内存泄漏、崩溃等问题,因此请务必注意。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值