Es gibt eine archived discussion im Oracle Community Forum, die schlägt vor, die Node innerhalb einer ScrollPane zu verpacken und den Tooltip auf dem ScrollPane zu setzen. Dies ist jedoch weniger als ideal, da es dem Szenegraphen einen unnötigen Knoten hinzufügt, aber noch wichtiger ist, dass es nicht in allen Szenarien gut funktioniert. Betrachten Sie versuchen, ein Tooltip auf die Grafik eines TitledPane hinzuzufügen:
<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>
Auch wenn die ScrollPane einen transparenten Hintergrund hat, gibt es noch eine sichtbare White-Box hinter dem Fragezeichen Grafik:
Es gibt einen Weg, um dieses, und das ist die Macht der <fx:script>
zu nutzen:
<?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>
Beachten Sie, dass die fx:id
der ImageView innerhalb des Skripts referenziert wird (ich habe diese Funktionalität nirgends dokumentiert und nur durch Experimente gefunden - was mich tatsächlich dazu veranlasste, dieses Q & A in der Hoffnung zu veröffentlichen, dass andere es nützlich finden würden). Die Ergebnisse sehen so aus: