我们正在为我们的应用程序自定义CSS解决问题。到现在为止,我们一直使用变通方法来应用自定义CSS,而其余部分则保留Modena样式。

StyleManager.getInstance().addUserAgentStylesheet(css);

但是,在8u40 Java更新中,此行为受到限制,并且不再起作用。单独为所有场景设置样式表很疯狂,可以通过以下方式设置自定义样式表
Application.setUserAgentStylesheet(css);

可以工作,但不符合我们的预期-Modena样式表已被自定义替换,因此根本没有设置许多控件的样式。
我们找到了另一个解决方法:将整个modena文件夹复制到我们的项目中,将自定义的CSS样式添加到modena.css中,(非常重要!)将modena.css重命名为其他名称,例如modenaB.css。在JavaFx源代码样式表中进行比较,如果名称保持不变,即使提供了不同的URL,也将使用原始的Modena。

我的问题是,是否有更好的方法在应用程序初始化时应用一个自定义样式表,该样式表将在所有场景中用于整个应用程序,同时为所有未覆盖的控件保留默认的Modena样式?

最佳答案

最简单的方法是在“用户代理样式表”中添加css文件。

@Override
public void start(Stage primaryStage) {
    // ...
    Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA);
    StyleManager.getInstance().addUserAgentStylesheet("example.css");
    // ...
}

答案来自GuiGarage

07-24 16:25