在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)。
“这就是应该在这段文字上创建工具提示的fxml代码。” No:['Text'](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/text/Text.html)的'@ DefaultProperty'是'text'属性,所以这会尝试将文本设置为提供的工具提示。 'Text'没有'setTooltip(...)'方法:你需要在['Tooltip.install(...)'](http://docs.oracle.com/ JavaSE的/ 8/JavaFX的/ API/JavaFX的/场景/控制/ Tooltip.html#安装-javafx.scene.Node-javafx.scene.control.Tooltip-)。你可以使用'Label',它有一个'setTooltip',所以你可以在FXML中设置它。 –
那么改为文本我应该使用标签是? –
如果“标签”适用于您需要的内容。当然,也可以在控制器中设置工具提示。 –