javafx - 工具提示与标签具有相同的样式

标签 java css javafx

在我的应用程序中,我有一个具有特定样式的标签,这个标签有一个工具提示。 现在我更改了我的代码,以便我的标签有一个类,并且我在 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 文件)

最佳答案

虽然IMO它没有提供明确的信息,请查看this link关于 CSS 继承:

CSS also provides for certain properties to be inherited by default, or to be inherited if the property value is 'inherit'. If a value is inherited, it is inherited from the computed value of the element's parent in the document tree. In JavaFX, inheritance is similar, except that instead of elements in the document tree, inheritance occurs from parent nodes in the scene graph.

因此,您的工具提示继承了其父级的一些 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-font-style-fx-font-weight

总而言之,如果你想让你的工具提示有一个规则的样式和大小,你必须给你的工具提示添加一个新的 CSS 样式:

.my-Tooltip {
-fx-font-size: 11pt;        
-fx-font-weight: normal;
-fx-font-style: normal;
}   

否则,它将始终继承其父项的样式。

关于javafx - 工具提示与标签具有相同的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32243345/

相关文章:

java - 不同的Java对象引用相同的内存位置?

javascript - IE 和 Firefox WIndows 上基于 UL 的损坏的 JQuery 菜单

JavaFX 图表 - 图例之间的空间

java - 在 CentOS 5.4 上 headless (headless) HTML 渲染图像

java - 代理模式 : how is it more efficent that creating the real object?

java - 流口水的其他情况

css - 我的 div 没有正确对齐

css - 使用 CSS 高度属性

android - javafxports如何调用android原生的Media Player

JavaFX : Not on FX application thread error occurs