gpt4 book ai didi

java - 在 JavaFX 中切换主题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:12 27 4
gpt4 key购买 nike

我开发了一个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com