Css Javafx文本和标签字体看起来不同

Css Javafx文本和标签字体看起来不同,css,javafx,styles,Css,Javafx,Styles,我试图使我的文本对象看起来像其他块,它们使用标签来显示一些文本。我无法使用标签,因为我需要文本功能来设置包裹宽度。但我看到了最终显示文本之间的直接区别。从屏幕截图中可以看出,文本的字体看起来比标签的字体要粗体一些。如何将文本样式设置为与标签一样 我认为这只是我的样式表问题,但我可以在SceneBuilder中看到相同的差异 在中,标签中的文本颜色设置为一种查找颜色,称为-fx text background color(这是文本的前景色,与名称无关),这又取决于查找颜色-fx backgroun

我试图使我的文本对象看起来像其他块,它们使用标签来显示一些文本。我无法使用标签,因为我需要文本功能来设置包裹宽度。但我看到了最终显示文本之间的直接区别。从屏幕截图中可以看出,文本的字体看起来比标签的字体要粗体一些。如何将文本样式设置为与标签一样

我认为这只是我的样式表问题,但我可以在SceneBuilder中看到相同的差异

在中,标签中的文本颜色设置为一种查找颜色,称为
-fx text background color
(这是文本的前景色,与名称无关),这又取决于查找颜色
-fx background
(因此名称…)。
-fx background
的值通常从父项继承;这里的想法是,它使用与背景形成对比的颜色。该值定义为

-fx文本背景色:梯形图(
-外汇背景,
-fx浅文本颜色45%,
-fx深色文本颜色46%,
-fx深色文本颜色59%,
-fx中文本颜色60%
);
因此,您可以通过为文本的
-fx fill
属性使用相同的CSS查找颜色,使文本看起来像标签。这是一个非常快速和肮脏的演示:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class TextColor extends Application {

    @Override
    public void start(Stage primaryStage) {
        Label plainLabel = new Label("A plain label");
        Text styledText = new Text("Styled text");
        styledText.setStyle("-fx-fill: -fx-text-background-color;");
        Text plainText = new Text("A plain text");

        VBox root = new VBox(10, plainLabel, styledText, plainText);
        root.setPadding(new Insets(10));
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

这也会使
文本
对背景的变化做出适当的反应。如果你加上

root.setStyle("-fx-background: black;");
然后,样式化文本(以及默认的标签)响应:

还要注意的是,对于
文本的用例,以下

label.setPrefWidth(...);
label.setWrapText(true);

将使您能够控制标签的包装宽度,并且可能是比此处建议的方法更自然的解决方案。

为什么不将
标签
更改为
文本