2017-01-04 1 views

Répondre

3

La fonctionnalité que vous recherchez est mis en œuvre the Tooltip class et vous pouvez ajouter un à un ImageView en utilisant 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(); 
} 

Vous pouvez facilement écrire une classe utilitaire qui vous permet d'installer le Tooltip à partir d'un fichier 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> 
+0

Si i ha J'ai défini mon image dans fxml, que dois-je choisir d'appeler la fonction ci-dessus une fois que je survole l'image? –

+1

@DanialKosarifa Donne à l'ImageView un 'id' (par exemple myImageView). Ensuite, dans votre contrôleur, ajoutez '@FXML private ImageView myImageView;'. Par la suite, vous pouvez ajouter l'info-bulle dans votre contrôleur. – Jai

+1

@Danial Ajout d'un code montrant comment ajouter l'info-bulle du fxml lui-même ... – fabian