gpt4 book ai didi

java - 更改 CSS 主题

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:34 27 4
gpt4 key购买 nike

我已经使用 java 和 javafx 制作了一个不错的小应用程序,并且最近开始使用 CSS 来设计它的样式。我想到了拥有不同主题(一个黄色、一个蓝色等)的想法,但后来意识到我不知道这样做的好方法。在 Java 中,如果我想改变一些东西,我会简单地改变一个变量的值,但在 CSS 中,我认为这是不可能的。所以对于我的问题,通过单击按钮(在应用程序内部)更改主题的最佳方法是什么?是否如我担心的那样,是否必须为每个主题制作单独的样式表并在样式表之间切换?感谢您的帮助。

最佳答案

JavaFX-CSS 中的正确方法是使用颜色变量(可能还有派生/梯形图函数)。所以你很可能有 3 个 CSS 文件:

  • style.css - 包含组件的选择器和对颜色变量的引用
  • theme-default.css - 带有默认颜色变量
  • theme-blue.css - 带有蓝色变量

您的 style.css 可能如下所示:

.button {
-fx-background-color: my-button-background-color;
}

你的 theme-default.css 将是

.root {
my-button-background-color: #f00;
}

你的 theme-blue.css 将是:

.root {
my-button-background-color: #00f;
}

如果你想翻转主题,你只需从场景中删除 theme-default.css 并在伪代码中添加 theme-blue.css(切换回来你会做相反的事情):

Scene s = ...
s.getStylesheet().addAll( "style.css", "theme-default.css" );

// ...
button.setOnAction( e -> {
if( s.getStylesheet().contains( "theme-default.css" ) ) {
s.getStylesheet().remove("theme-default.css");
s.getStylesheet().add("theme-blue.css");
} else {
s.getStylesheet().remove("theme-blue.css");
s.getStylesheet().add("theme-default.css");
}
} );

关于java - 更改 CSS 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36240807/

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