2017-01-04 5 views
0

Я делаю проект через JavaFx, и у меня есть изображение, и я хочу отобразить некоторую информацию об этом изображении, когда я нависаю над ним (например, тег заголовка в HTML).Как показать заголовок для изображения, когда я нависаю над ним в JavaFx

Любая идея, как я могу это сделать?

ответ

3

Функциональность вы ищете осуществляется в 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> 
+0

Если я га ve определил мое изображение в fxml, которое я должен выбрать для вызова указанной функции после того, как я накрою изображение? –

+1

@DanialKosarifa Дайте ImageView «id» (например, myImageView). Затем в вашем контроллере добавьте '@FXML private ImageView myImageView;'. После этого вы можете добавить всплывающую подсказку в свой контроллер. – Jai

+1

@Danial Добавлен код, демонстрирующий, как добавить всплывающую подсказку из самого fxml ... – fabian