2016-06-20 12 views
1

Ich möchte ein Bild als Tooltip zeigen. Es funktioniert in Ordnung, aber an einigen zufälligen Punkten zeigt es Fluktuation. Ich möchte es normal zeigen, ohne fluktuieren zu müssen.Wie zeige ich Bild als Tooltip in JavaFX?

enter image description here

zeige ich eine neue Szene (in dem ich mit dem Bild meiner Bild-Ansicht hinzugefügt) auf Mausereignis eingeben und auf Maus Event verlassen Ereignis schließen

// MOUSE ENTER PHOTO CORRECTIO 
@FXML 
private void mouseEnterPhotoCorrection(MouseEvent event) { 
    if (f_ShowToolTip) { 
     Stage stg = funShowImageTooltip(); 
     double x, y; 
     x = event.getScreenX(); 
     y = event.getScreenY(); 
     stg.setX(x); 
     stg.setY(y); 
     stg.show(); 
     f_ShowToolTip = false; 
    } 
} 

// MOUSE LEAVE PHOTO CORRECTIO 
@FXML 
private void mouseLeavePhotoCorrection(MouseEvent event) { 
    funHideImageTooltip(); 
    f_ShowToolTip = true; 
} 

/**** ************************** FUNKTIONEN *********************** ********/

Stage s; 
boolean f_ShowToolTip; 

// FUNCTION TO SET INITAL STATE OF PHOTOS AND CORRECTION 
private void funInitPhotosCorrection() 
{ 
    f_ShowToolTip = true; 
} 

private Stage funShowImageTooltip() 
{ 
    try { 
     s = new Stage(); 

     FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("frmImageToolTip.fxml")); 

     Parent root = (Parent) fxmlLoader.load(); 
     Scene scene = new Scene(root);     

     s.setScene(scene); 
     s.setResizable(false); 

     s.initModality(Modality.WINDOW_MODAL); 
     s.initStyle(StageStyle.UNDECORATED); 

     s.setResizable(false); 

     double x, y; 
     //x = btn_Red. 

     s.show(); 

     }catch(Exception e1) 
     { 
     } 
    return s; 
} 

private void funHideImageTooltip() 
{ 
    try { 
     s.close(); 
    } catch (Exception e) { 
    } 

}  

enter image description here

Antwort

1

Wenn Sie einfach nur eine Tooltip über eine Node (eine Button in Ihrem Fall) haben möchten, ist es sinnvoll, eine Tooltip und ihre graphicProperty anstelle einer anderen Stage zu verwenden.

// Load the image with the needed size 
Image image = new Image("...", 150, 150, true, true); 

// Place it over a Button 
Button button = new Button(); 

Tooltip tooltip = new Tooltip(); 
tooltip.setGraphic(new ImageView(image)); 

button.setTooltip(tooltip); 
+0

Ich habe es versucht, aber es funktioniert nicht –

+0

Was ist "nicht funktioniert"? Wenn Sie "..." mit etwas Gültigem ersetzen, funktioniert es. – DVarga

+0

Ich ersetze das "...." mit Bild-URL, aber es funktioniert nicht –