Lor*_*y A 5 css java javafx javafx-8
我开发了一个 Java FX 应用程序,并使用 CSS 进行样式设置。该应用程序几乎对所有内容都使用默认颜色,因此我发现只需在 .css 中添加一个更暗的底色即可:
/* DarkTheme*/
.root {
-fx-base: rgba(60, 60, 60, 255);
}
Run Code Online (Sandbox Code Playgroud)
我得到了一个黑暗的主题效果,所有的颜色都会相应地调整。我只是找不到一种以编程方式执行此操作的方法,实际上是通过添加#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
Run Code Online (Sandbox Code Playgroud)
3)一旦我找到了正确的元素,如果我想回去,我该怎么做? 我是否需要再次调用 set style,传递基色(我需要从一些元数据中提取?),或者我可以以某种方式删除以前的样式添加?**
最终结果应该是一个控件(按钮、radiob 等),允许在深色和浅色主题之间快速切换。
将样式应用到您想要设置样式的节点(包括后代)。就您而言,它可能是您场景的根源。
style
您可以通过将属性设置回旧值(默认情况下)来撤消更改""
:
Parent sceneRoot = ...
// enable style
sceneRoot.setStyle("-fx-base: rgba(60, 60, 60, 255);");
// disable style
sceneRoot.setStyle("");
Run Code Online (Sandbox Code Playgroud)
或者,您可以在场景/节点的样式表中包含 CSS 样式表。这将使您的样式更加个性化:
String styleSheetURL = ...
// enable style
scene.getStylesheets().add(styleSheetURL);
// disable style
scene.getStylesheets().remove(styleSheetURL);;
Run Code Online (Sandbox Code Playgroud)