JavaFX - 为整个应用程序设置默认 CSS 样式表
JavaFX - Set default CSS stylesheet for the whole Application
我是 JavaFX 的新手,我正在尝试通过 CSS 更改我的应用程序方面。第一次它工作正常,当我切换到另一个场景时 CSS' 类 未应用。
因为我的项目有 10 个场景,所以我更喜欢使用单个 CSS 文件通过以下语句将我的样式应用到所有场景:
StyleManager.getInstance().addUserAgentStylesheet(this.getClass().getResource("/style.css").toExternalForm());
进入 start()
方法。
如何将我的 CSS 文件全局应用于所有场景?
你可以用下面两行来完成:
Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA);
StyleManager.getInstance().addUserAgentStylesheet(getClass().getResource("/style.css").toString());
第一行使用 Application#setUserAgentStylesheet
将默认样式表设置为 modena(在这里您甚至可以选择将 JavaFX2 caspian 设置为默认样式表),而第二行将您的样式表添加到用户代理样式表列表.
这不是最好的解决方案,因为 StlyeManager
是私有的 API(并且将像现在一样保留在 JDK9 中)。
其他解决方案是子类化 Scene
,在子类中您可以默认添加样式表,然后您可以创建子类的实例而不是实例化 Scene
。
我是 JavaFX 的新手,我正在尝试通过 CSS 更改我的应用程序方面。第一次它工作正常,当我切换到另一个场景时 CSS' 类 未应用。
因为我的项目有 10 个场景,所以我更喜欢使用单个 CSS 文件通过以下语句将我的样式应用到所有场景:
StyleManager.getInstance().addUserAgentStylesheet(this.getClass().getResource("/style.css").toExternalForm());
进入 start()
方法。
如何将我的 CSS 文件全局应用于所有场景?
你可以用下面两行来完成:
Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA);
StyleManager.getInstance().addUserAgentStylesheet(getClass().getResource("/style.css").toString());
第一行使用 Application#setUserAgentStylesheet
将默认样式表设置为 modena(在这里您甚至可以选择将 JavaFX2 caspian 设置为默认样式表),而第二行将您的样式表添加到用户代理样式表列表.
这不是最好的解决方案,因为 StlyeManager
是私有的 API(并且将像现在一样保留在 JDK9 中)。
其他解决方案是子类化 Scene
,在子类中您可以默认添加样式表,然后您可以创建子类的实例而不是实例化 Scene
。