加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

javafx – 一旦设置了阶段,就无法设置样式

发布时间:2020-12-15 04:20:02 所属栏目:Java 来源:网络整理
导读:我有一个舞台,并设置它的风格 stage.initStyle(StageStyle.TRANSPARENT); 几秒钟之后,我需要将initStyle改为装饰,但是当我使用时 stage.initStyle(StageStyle.Decorate ); 给我这个例外 java.lang.IllegalStateException: Cannot set style once stage has b
我有一个舞台,并设置它的风格

stage.initStyle(StageStyle.TRANSPARENT);

几秒钟之后,我需要将initStyle改为装饰,但是当我使用时

stage.initStyle(StageStyle.Decorate );

给我这个例外

java.lang.IllegalStateException: Cannot set style once stage has been set visible

有任何想法吗?

解决方法

什么不该做

正如例外所说,你

Cannot set style once stage has been set visible

所以,如果你不能这样做,不要试图这样做.

该怎么办

相反,隐藏透明舞台并使用新样式创建一个新舞台.
这样做时要小心,因为默认行为是在隐藏所有阶段后关闭JavaFX系统.要避免这种情况,请关闭默认行为并在需要时显式关闭JavaFX系统,或确保始终至少有一个Window可见.

// initialize your splash stage.
Platform.setImplicitExit(false);
splashStage.initStyle(StageStyle.TRANSPARENT);
. . .
// create your main stage.
Stage mainStage = new Stage();
mainStage.setScene(mainScene);
mainStage.initStyle(StageStyle.DECORATED); 
mainStage.setOnHide(event -> Platform.exit())
. . .
// on some later event hide your splash stage and show your main stage.
splashStage.hide();
mainStage.show();

有关

这是基于前一个问题的答案的full executable sample => How to create Splash screen with transparent background in JavaFX.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读