在 JavaFX 的子类中Control https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/package-summary.html有一个工具提示属性,这意味着可以声明性地添加一个Tooltip https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Tooltip.html因此使用 FXML:
<CheckBox fx:id="someCheckBox" mnemonicParsing="false" text="Do It?">
<tooltip>
<Tooltip text="Whether or not to do it."/>
</tooltip>
</CheckBox>
这之所以可能,只是因为CheckBox https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/CheckBox.html是 Control 的子类。
但是,我希望能够使用 FXML 将工具提示添加到任何场景图节点(即无需使用 Java 以编程方式添加工具提示)。
有一个Oracle 社区论坛上建议将Node https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html里面的一个滚动窗格 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ScrollPane.html并在 ScrollPane 上设置工具提示。虽然这不太理想,因为它向场景图中添加了不必要的节点,但更重要的是,它并不能在所有情况下都能很好地工作。考虑尝试将工具提示添加到标题窗格 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TitledPane.html:
<TitledPane text="My TitledPane" fx:id="someTitledPane" expanded="true" contentDisplay="RIGHT">
<graphic>
<ScrollPane fitToWidth="true" fitToHeight="true" style="-fx-background-color: rgba(255, 255, 255, 0);">
<ImageView fitWidth="24.0" fitHeight="24.0" preserveRatio="true" pickOnBounds="true">
<image>
<Image url="/images/questionMark.jpg" />
</image>
</ImageView>
<tooltip>
<Tooltip text="My tooltip."/>
</tooltip>
</ScrollPane>
</graphic>
<Label text="Hello!"/>
</TitledPane>
尽管 ScrollPane 具有透明背景,但在问号图形后面仍然有一个可见的白框:
有一个方法可以解决这个问题,那就是利用<fx:script>
:
<?language javascript?>
<TitledPane text="My TitledPane" fx:id="someTitledPane" expanded="true" contentDisplay="RIGHT">
<graphic>
<ImageView fx:id="questionMarkImageView" fitWidth="24.0" fitHeight="24.0" preserveRatio="true" pickOnBounds="true">
<image>
<Image url="/images/questionMark.jpg" />
</image>
</ImageView>
<fx:script>
var tooltip = new javafx.scene.control.Tooltip('My tooltip');
javafx.scene.control.Tooltip.install(questionMarkImageView, tooltip);
</fx:script>
</graphic>
<Label text="Hello!"/>
</TitledPane>
请注意,fx:id
ImageView 的属性在脚本内部被引用(我没有在任何地方看到这个功能的记录,只是通过实验发现它 - 这实际上促使我发布这个问答,希望其他人会发现它有用)。结果如下:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)