如何使用 JavaFX 9(StyleManager 的替代品)为应用程序设置多个默认 CSS 样式表?
How to set several default CSS stylesheet for an application with JavaFX 9 (a replace for StyleManager)?
在没有直接和明确替换的情况下排除 StyleManager 是谁的该死的想法 - 正如我所见,它破坏了很多程序!
我需要对整个应用程序进行一些重新设计(自定义组件、自定义伪 类、自定义平台特定补丁等)。
在 JavaFX 8 中我可以使用:com.sun.javafx.css.StyleManager.getInstance().addUserAgentStylesheet("MyShit.css");
但在 Java 9 StyleManager 中不可用。那么有没有办法让每个场景都设置CSS呢?
使用 "Application.setUserAgentStylesheet" 不是一个选项,因为我不想失去默认的外观,我已经调用它来设置 MODENA 样式。我想扩展默认 CSS 而不是替换它。
而且我也不想重写整个 MODENA(显然)。
而且我真的不想为应用程序中的每个 form/scene 手动设置相同的样式表(或将其添加到每个 FXML 文件)。有多种形式,动态构造的对话框。主要原因是,有些部分(和库)在多个应用程序之间共享,因此我不想对任何样式表进行硬编码(对于不同的应用程序,它们可能具有不同的名称和路径)。
所以我需要一种方法来在程序的一个点为应用程序的每个可能场景设置一个额外的样式表。这在 FX9 中可能吗?
P.S。我研究了自定义 FXML 加载器、CSS 加载器、场景加载器和其他拦截场景创建的方法 - 没有办法!
这只是另一个缺少 JavaFX 的地方 - 只需使用下面的 JVM 参数即可访问 StyleManager。
--add-exports=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED
在没有直接和明确替换的情况下排除 StyleManager 是谁的该死的想法 - 正如我所见,它破坏了很多程序!
我需要对整个应用程序进行一些重新设计(自定义组件、自定义伪 类、自定义平台特定补丁等)。
在 JavaFX 8 中我可以使用:com.sun.javafx.css.StyleManager.getInstance().addUserAgentStylesheet("MyShit.css");
但在 Java 9 StyleManager 中不可用。那么有没有办法让每个场景都设置CSS呢?
使用 "Application.setUserAgentStylesheet" 不是一个选项,因为我不想失去默认的外观,我已经调用它来设置 MODENA 样式。我想扩展默认 CSS 而不是替换它。 而且我也不想重写整个 MODENA(显然)。
而且我真的不想为应用程序中的每个 form/scene 手动设置相同的样式表(或将其添加到每个 FXML 文件)。有多种形式,动态构造的对话框。主要原因是,有些部分(和库)在多个应用程序之间共享,因此我不想对任何样式表进行硬编码(对于不同的应用程序,它们可能具有不同的名称和路径)。
所以我需要一种方法来在程序的一个点为应用程序的每个可能场景设置一个额外的样式表。这在 FX9 中可能吗?
P.S。我研究了自定义 FXML 加载器、CSS 加载器、场景加载器和其他拦截场景创建的方法 - 没有办法!
这只是另一个缺少 JavaFX 的地方 - 只需使用下面的 JVM 参数即可访问 StyleManager。
--add-exports=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED