Css Javafx文本和标签字体看起来不同
我试图使我的文本对象看起来像其他块,它们使用标签来显示一些文本。我无法使用标签,因为我需要文本功能来设置包裹宽度。但我看到了最终显示文本之间的直接区别。从屏幕截图中可以看出,文本的字体看起来比标签的字体要粗体一些。如何将文本样式设置为与标签一样 我认为这只是我的样式表问题,但我可以在SceneBuilder中看到相同的差异 在中,标签中的文本颜色设置为一种查找颜色,称为Css Javafx文本和标签字体看起来不同,css,javafx,styles,Css,Javafx,Styles,我试图使我的文本对象看起来像其他块,它们使用标签来显示一些文本。我无法使用标签,因为我需要文本功能来设置包裹宽度。但我看到了最终显示文本之间的直接区别。从屏幕截图中可以看出,文本的字体看起来比标签的字体要粗体一些。如何将文本样式设置为与标签一样 我认为这只是我的样式表问题,但我可以在SceneBuilder中看到相同的差异 在中,标签中的文本颜色设置为一种查找颜色,称为-fx text background color(这是文本的前景色,与名称无关),这又取决于查找颜色-fx backgroun
-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);
将使您能够控制标签的包装宽度,并且可能是比此处建议的方法更自然的解决方案。为什么不将标签
更改为文本
?