我开发了一个Java FX应用程序,并使用CSS进行样式设计。 该应用程序使用几乎所有内容的默认颜色,所以我发现只需在.css中添加一个更暗的基础:
/* DarkTheme*/
.root {
-fx-base: rgba(60, 60, 60, 255);
}
我得到一个黑暗的主题效果,所有颜色都相应调整。 我只是找不到以编程方式执行此操作的方法,实际上是通过添加#setStyle行:
1)我应该使用哪个节点 setStyle
?此规则将影响所有节点。
2)我传递的字符串 setStyle
?我认为:
<node>.setStyle("-fx-base: rgba(60, 60, 60, 255);"); //dark theme
<node>.setStyle("-fx-base: <something>"); //back to light def. theme
3)一旦找到正确的元素,如果我想回去,我该怎么做呢? 我是否需要再次调用set样式,传递基色(我需要从某些元数据中提取?),还是可以以某种方式删除以前的样式添加?**
最终结果应该是一个控制(按钮,无线电,......),可以在黑暗和光明主题之间快速切换。
答案 0 :(得分:2)
将样式应用于要设置样式的节点(包括后代)。在你的情况下,它可能是你场景的根源。
您可以通过将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);;