7

谁该死的想法是在没有直接和明确替换的情况下排除 StyleManager - 它破坏了许多程序,正如我所见!

我需要对整个应用程序进行一些重新设计(自定义组件、自定义伪类、自定义平台特定补丁等)。在 JavaFX 8 中,我可以使用:com.sun.javafx.css.StyleManager.getInstance().addUserAgentStylesheet("MyShit.css");

但在 Java 9 StyleManager 中不可用。那么有没有办法为每个场景设置 CSS 呢?

使用“Application.setUserAgentStylesheet”不是一个选项,因为我不想失去默认的外观,我已经调用它来设置 MODENA 样式。我想扩展默认 CSS 而不是替换它。而且我也不想重写整个 MODENA(显然)。

而且我真的不想为应用程序中的每个表单/场景手动设置相同的样式表(或将其添加到每个 FXML 文件中)。有许多形式,动态构造的对话框。主要原因是多个应用程序之间共享了一些部分(和库),所以我不想硬编码任何样式表(对于不同的应用程序可能有不同的名称和路径)。

所以我需要一种方法在程序的一个点为应用程序的每个可能场景设置一个额外的样式表。在 FX9 中可以吗?

PS 我研究了自定义 FXML 加载器、CSS 加载器、场景加载器和其他拦截场景创建的方法 - 没有办法!

4

1 回答 1

2

这只是 JavaFX 的另一个不足 - 只需使用下面的 JVM 参数即可使 StyleManager 可访问。

--add-exports=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED
于 2017-11-14T17:42:18.790 回答