gpt4 book ai didi

css - 通过 .css 文件更改 JavaFX 中的字体颜色

转载 作者:行者123 更新时间:2023-12-03 08:48:19 26 4
gpt4 key购买 nike

有人可以告诉我为什么下面示例中的 -fx-text-fill 无法更改字体颜色吗? -fx-中风也是我尝试过的。谢谢!

Java 文件:

package SimpleTextFromCSS;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class Main extends Application
{
@Override
public void start(Stage primaryStage)
{
GridPane rootGP = new GridPane();
Label centerText = new Label("Sample text.");
rootGP.getChildren().add(centerText);
Scene scene = new Scene(rootGP,1200,800);
scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());

primaryStage.setScene(mainScene);
primaryStage.show();
}
}
public static void main(String[] args)
{
launch(args);
}
}

CSS:

.root{
-fx-font-family: "Broadway";
-fx-font-size: 50pt;
-fx-text-fill: blue;
}

最佳答案

正如评论中所指出的(感谢 @Slaw ), -fx-text-fill默认情况下不会继承属性,因此为根 Pane 设置它将不允许它向下传播到 UI 中的标签。一个可能的修复方法是定义属性,例如 .label ,但更好的方法是 Hook 默认样式表(“modena”)的“主题”功能。诚然,这方面的文档非常薄弱,但请阅读 CSS source code 中的评论。 ,特别是在文件顶部,指示其工作原理。

Modena 定义了一种名为 -fx-text-background-color 的“查找颜色” ,用于在填充 -fx-background-color 的背景上绘制文本。 。一个Label就是这样的文本,默认样式表将标签的文本填充设置为 -fx-text-background-color .

因此一种方法是重新定义 -fx-text-background-color值:

.root{
-fx-font-family: "Broadway";
-fx-font-size: 50pt;
-fx-text-background-color: blue;
}

如果你想更复杂一点,默认值-fx-text-background-color实际上是一个“梯子”,它根据背景的强度来选择颜色。它本身是根据其他三种颜色定义的:

  • -fx-light-text-color (对于深色背景,默认为白色),
  • -fx-mid-text-color (对于浅色背景,默认为浅灰色),以及
  • -fx-dark-text-color (对于中等背景,默认为黑色)。

因此,如果您想要一个在视觉上对标签背景的变化具有鲁棒性的解决方案,您可以这样做

.root{
-fx-font-family: "Broadway";
-fx-font-size: 50pt;

-fx-dark-text-color: navy ;
-fx-mid-text-color: blue ;
-fx-light-text-color: skyblue ;
}

关于css - 通过 .css 文件更改 JavaFX 中的字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60488426/

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