gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:37 24 4
gpt4 key购买 nike

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

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