Функциональность вы ищете осуществляется в the Tooltip
class, и вы можете добавить один к ImageView
с помощью Tooltip.install
:
@Override
public void start(Stage primaryStage) {
Tooltip tooltip = new Tooltip("stackoverflow logo");
ImageView imageView = new ImageView("https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a");
imageView.setPickOnBounds(true);
Tooltip.install(imageView, tooltip);
StackPane root = new StackPane(imageView);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
Вы можете легко написать класс, который позволяет установить Tooltip
из файла FXML:
package fxml;
import javafx.scene.Node;
import javafx.scene.control.Tooltip;
public final class TooltipUtil {
private TooltipUtil() {}
public static void setTooltip(Node node, Tooltip tooltip) {
Tooltip.install(node, tooltip);
}
// only here for the FXMLLoader
@Deprecated
public static Tooltip getTooltip(Node node) {
throw new UnsupportedOperationException();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Tooltip?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.StackPane?>
<?import fxml.TooltipUtil?>
<StackPane xmlns:fx="http://javafx.com/fxml/1">
<children>
<ImageView pickOnBounds="true" >
<image>
<Image url="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a"/>
</image>
<TooltipUtil.tooltip>
<Tooltip text="stackoverflow logo" />
</TooltipUtil.tooltip>
</ImageView>
</children>
</StackPane>
Если я га ve определил мое изображение в fxml, которое я должен выбрать для вызова указанной функции после того, как я накрою изображение? –
@DanialKosarifa Дайте ImageView «id» (например, myImageView). Затем в вашем контроллере добавьте '@FXML private ImageView myImageView;'. После этого вы можете добавить всплывающую подсказку в свой контроллер. – Jai
@Danial Добавлен код, демонстрирующий, как добавить всплывающую подсказку из самого fxml ... – fabian