2017-08-24 54 views
0

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

+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中设置它。 –

+0

那么改为文本我应该使用标签是? –

+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等同于调用此静态方法)。

你的其他选择,如果它的工作原理,将更换TextLabel

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

注意Label不允许直接配置stroke,作为Text做,所以你会失去该功能(或者至少不得不使用CSS)。

+0

好吧,它的作品,我不得不改变标签,并添加