JavaFx 文本工具提示鼠标悬停没有得到任何响应

JavaFx Text Tooltip mouseover doesn't get any response

我在 JavaFx 中的文本元素上设置了工具提示,只要我不将鼠标悬停在文本上,一切都会正常,工具提示不会显示。

 <Text layoutX="329.0" layoutY="202.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Tcond[C]" textAlignment="CENTER">
      <Tooltip text="'%Empty_Bundle'"/>
  </Text>

这是应该在该文本上创建工具提示的 fxml 代码。

如何在不为我的视图控制器中的对象创建分配文本并使用 .setTooltp() 方法在工具提示上进行设置的情况下修复它?

在 FXML 中,如果您将一个实例元素直接嵌入到另一个实例元素中,而没有 属性 元素,它用于将 属性 注释设置为外部实例上的 @DefaultProperty元素。

如果您检查 documentation for Text,您会看到默认的 属性 是 "text":所以您的 FXML 等同于

<Text layoutX="329.0" layoutY="202.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Tcond[C]" textAlignment="CENTER">
    <text>
        <Tooltip text="'%Empty_Bundle'"/>
    </text>
</Text>

换句话说,您正在尝试将 Text 对象的文本设置为工具提示。

Text 实际上根本没有 setTooltip(...) 方法;该方法在 Control class 中定义,其中 Text 不是子 class。在 Text 实例上设置工具提示的唯一方法是使用 Tooltip.installTooltip(...) method,您只能从控制器调用它(没有 FXML 等效于调用此静态方法)。

你的另一个选择,如果可行的话,是将 Text 替换为 Label:

<Label layoutX="329.0" layoutY="202.0" text="Tcond[C]" textAlignment="CENTER">
    <tooltip>
        <Tooltip text="'%Empty_Bundle'"/>
    </tooltip>
</Label>

请注意,Label 不允许您像 Text 那样直接配置 stroke,因此您将失去该功能(或者至少必须使用 CSS 代替)。