我开发了一个 Java FX 应用程序,并使用 CSS 进行样式设置。 该应用程序几乎对所有内容都使用默认颜色,所以我发现只需在 .css 中添加一个较暗的底色即可:
/* DarkTheme*/
.root {
-fx-base: rgba(60, 60, 60, 255);
}
我得到了深色主题效果,所有颜色都相应调整。 我只是找不到通过添加带有 #setStyle 的行来以编程方式执行此操作的方法,事实上:
1) 我应该使用什么节点 setStyle
on? 此规则将影响所有节点。
2) 我要传递给什么字符串 setStyle
? 我假设:
<node>.setStyle("-fx-base: rgba(60, 60, 60, 255);"); //dark theme
<node>.setStyle("-fx-base: <something>"); //back to light def. theme
3) 一旦我找到了正确的元素,如果我想返回,我该怎么做? 我是否需要再次调用设置样式,传递基色(我需要从一些元数据中提取?),或者我可以以某种方式删除之前添加的样式吗?**
最终结果应该是一个允许在深色和浅色主题之间快速切换的控件(按钮、radiob 等)。
最佳答案
将样式应用于您希望设置样式的节点(包括后代)。在您的情况下,它可能是您场景的根。
您可以通过将 style
属性设置回其旧值(默认为 ""
)来撤消更改:
Parent sceneRoot = ...
// enable style
sceneRoot.setStyle("-fx-base: rgba(60, 60, 60, 255);");
// disable style
sceneRoot.setStyle("");
或者,您可以在场景/节点的样式表中使用包含 CSS 样式表。这将使您的风格更加个性化:
String styleSheetURL = ...
// enable style
scene.getStylesheets().add(styleSheetURL);
// disable style
scene.getStylesheets().remove(styleSheetURL);;
关于java - 在 JavaFX 中切换主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49475076/