我正在使用JDK8 build 87
,并希望动态添加和删除css stylesheets
,以便我的整个JavaFX
应用程序可以使用它们。
目前我正在使用此命令设置默认styleSheet
:
Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA);
然后当我想添加一个额外的css样式表时,我这样做:
com.sun.javafx.css.StyleManager.getInstance.addUserAgentStylesheet(styleSheet);
这有效,但我有两个问题。首先,它使用私有 API
,其次,一旦完成它,似乎没有办法删除它(我正在使用OSGI
所以模块的出入是很常见的。)
有人谈到在2012年初将StyleManager
移至公开 API
,但我不确定是否发生了任何事情。
是否有人知道要添加styleSheets
的公共方法,以便它们适用于整个JavaFX
应用程序?如何删除它们?
(我没有权限创建新的javafx-8标记)
答案 0 :(得分:4)
根据Global Stylesheet for your GUI application:
// load default global stylesheet
Application.setUserAgentStylesheet(null);
// add custom global stylesheet
StyleManager.getInstance().addUserAgentStylesheet(AQUA_CSS_NAME);
然而,正如Boomah所指出的那样,StyleManager.getInstance().addUserAgentStylesheet
不是JavaFX API的一部分,因此不推荐使用此方法直接从用户代码中使用。此外,它只适用于添加全局样式表,而不是在添加样式表后删除这样的样式表。
更冒险的人可以通过修改StyleManager代码来支持删除全局样式表并修改Application类源代码以为新功能提供公共API,从而创建补丁以添加Boomah的建议功能使用更新的StyleManager
,然后将补丁提交到openjfx-dev以包含在JavaFX平台中。
与此同时,您可以在每个应用程序的场景中手动设置用户样式表 - 有点痛苦,但你有。 。