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