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

时间:2017-08-24 16:30:14

标签: javafx text tooltip fxml

我在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()方法设置工具提示?

1 个答案:

答案 0 :(得分:0)

在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类中定义,其中Text不是子类。在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不允许您像stroke那样直接配置Text,因此您将失去该功能(或至少必须使用CSS)。