是否可以使用带有装饰的透明JavaFX窗口(最小化,最大化,关闭)

时间:2015-09-24 18:50:50

标签: java centos javafx-8 transparency stage

我知道在java-fx中使窗口透明,你需要将舞台样式设置为stage.initStyle(StageStyle.TRANSPARENT);。然而,这也将删除任何舞台装饰,所以这不能解决我的问题。

我需要这个的原因是因为我的应用程序需要在某些点使用stage.setAlwaysOnTop();,但目标系统(centOS)上不支持此功能。该应用程序还需要stage.setIconnified();,但如果舞台未修饰则无法使用。

任何建议将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

简短的回答是“不,你不能”......因为最小化/最大化/关闭按钮是装饰的一部分。没有装饰 - 没有按钮。这本身就是一个矛盾。

如果您需要这些按钮的功能,则必须创建自己的按钮作为UI的一部分,并模拟装饰按钮的行为。这就是许多应用程序没有默认装饰的情况。

无论如何,如果你想以这种方式操纵窗口行为(保持在顶部/图标化等),你总是需要考虑底层操作系统。任何应用程序(不仅是Java应用程序)只允许干扰窗口管理,只要操作系统窗口系统允许它们这样做。 例如,在各种MS Windows版本中,此时操作系统行为已多次更改。