JavaFx文本工具提示mouseover没有得到任何回应
问题描述:
我在JavaFx中的文本元素上设置了一个工具提示,只要我不将鼠标悬停在文本上,工具提示就不会显示。JavaFx文本工具提示mouseover没有得到任何回应
<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
类中定义,其中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)。
+0
好吧,它的作品,我不得不改变标签,并添加
“这就是应该在这段文字上创建工具提示的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中设置它。 –
那么改为文本我应该使用标签是? –
如果“标签”适用于您需要的内容。当然,也可以在控制器中设置工具提示。 –