java - 如何使用 JavaFX 9(StyleManager 的替代品)为应用程序设置多个默认 CSS 样式表?

标签 java javafx fxml java-9 javafx-9

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

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

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

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

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

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

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

最佳答案

这只是 JavaFX 的另一种缺失 - 只需使用下面的 JVM 参数即可使 StyleManager 可访问。

--add-exports=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED

关于java - 如何使用 JavaFX 9(StyleManager 的替代品)为应用程序设置多个默认 CSS 样式表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47274305/

相关文章:

css - JavaFX和css的误解

java - 如何启动一个java程序?

java - 应用程序因 NullPointerException 而崩溃

java - 停止 JavaFX LinearGradient 中的不透明度

java - 将 JavaFX 项目导出到 android

java - 更改/更新另一个类中的 FXML 组件

css - 如何在 FXML 中添加 CSS 样式表

Java JTextPane 向 JScrollPane 添加空白区域

java - 为什么不满足这个条件?

javafx快照性能低下