在我的应用程序中,我有一个带有特定样式的标签,这个标签有一个工具提示。现在,我更改了代码,以便我的标签有一个类,并在css中定义样式。(效果很好)
但是现在工具提示具有与标签相同的样式(在它有标准javafx 8样式之前)
css:
.my-Class {
-fx-text-fill:lightblue;
-fx-font-size: 11pt;
-fx-font-weight:bold;
-fx-font-style:italic;
}这就是我创建标签的代码
Label label= new Label("i");
label.getStyleClass().add("my-Class ");
label.setTooltip(new Tooltip("xxx"));在更改css之前,工具提示是标准字体/大小/.现在字体是粗体和斜体(但不是蓝色)。
为什么是这样?以及如何将其更改回以前的方式(但通过使用css文件)
发布于 2015-08-28 10:56:23
虽然国际海事组织没有提供明确的信息,但请查看此链接有关CSS继承的信息:
CSS还提供默认继承的某些属性,或者如果属性值“继承”,则继承属性。如果继承了一个值,则从文档树中元素的父元素的计算值继承它。在JavaFX中,继承类似于场景图中的父节点,而不是文档树中的元素。
因此,您的工具提示继承了它的父级CSS属性。你怎么知道它继承的是哪种属性?看看这些行(Java 8,不是一个简单的代码!):
Label label= new Label("i");
label.getStyleClass().add("my-Class");
Tooltip tooltip = new Tooltip(“xxx”);
label.setTooltip(tooltip);
List<CssMetaData< ? extends Styleable, ? >> cssProperties = ex2.getCssMetaData().stream().filter(t -> t.getProperty().equals("-fx-font")).findFirst().get().getSubProperties();
boolean inherits = cssProperties.stream().filter(t -> t.getProperty().equals("-fx-font-style")).findFirst().get().isInherits(); // Returns true如果检查cssProperties列表,您应该能够看到继承的所有相关字体属性(inherits: true)。此列表应至少返回四种css样式,其中-fx-字体样式和-fx-字体权重将出现。
总之,如果要使工具提示具有常规的样式和大小,则必须在工具提示中添加新的CSS样式:
.my-Tooltip {
-fx-font-size: 11pt;
-fx-font-weight: normal;
-fx-font-style: normal;
} 否则,它将永远继承它父母的风格。
https://stackoverflow.com/questions/32243345
复制相似问题