3 javafx
我有一个舞台,并设置它的风格
stage.initStyle(StageStyle.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)
几秒钟之后,我需要将initStyle改为装饰,但是当我使用时
stage.initStyle(StageStyle.Decorate );
Run Code Online (Sandbox Code Playgroud)
给我这个例外
java.lang.IllegalStateException: Cannot set style once stage has been set visible
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
什么不该做
正如例外所说,你
一旦阶段设置可见,无法设置样式
所以,如果你不能这样做,不要试图这样做.
该怎么办
相反,隐藏透明舞台并使用新样式创建一个新舞台.这样做时要小心,因为默认行为是在隐藏所有阶段后关闭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();
Run Code Online (Sandbox Code Playgroud)
有关
以下是基于对上一个问题的回答的完整可执行示例 => 如何在JavaFX中创建具有透明背景的启动画面.
| 归档时间: |
|
| 查看次数: |
6562 次 |
| 最近记录: |