Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8088803

label.setGraphic() with an ImageView does not respond to mouse clicks



    • Type: Bug
    • Status: Open
    • Priority: P4
    • Resolution: Unresolved
    • Affects Version/s: 7u15
    • Fix Version/s: tbd
    • Component/s: javafx
    • Environment:

      java.version: 1.7.0_17, javafx.runtime.version: 2.2.7-b01, java.version: 1.8.0-ea, javafx.runtime.version: 8.0.0-ea-b82 problems seems to occur on both Mac OS X and Ubuntu


      When we add an onMouseClicked-Eventhandler to an ImageView and set this ImageView as an icon to a Label with the setGraphic() method, the ImageView will not respond to any mouse clicked events.

      However, when we wrap the ImageView in an HBox the mouse-event works! If we use a Rectangle node in place of the ImageView mouse-events work as well (without the need to wrap in an HBox).

      ImageView and Rectangle appear as regular nodes to us. So why is there a difference in mouse-event processing?

      SSCCE (you'll need a "any.png" image resource in the classpath)

      import javafx.application.Application;
      import javafx.event.EventHandler;
      import javafx.geometry.Insets;
      import javafx.scene.Node;
      import javafx.scene.Scene;
      import javafx.scene.control.Label;
      import javafx.scene.image.Image;
      import javafx.scene.image.ImageView;
      import javafx.scene.input.MouseEvent;
      import javafx.scene.layout.HBox;
      import javafx.scene.layout.VBox;
      import javafx.stage.Stage;

      public class ImageViewApp extends Application {
          private final Image image = new Image(ImageViewApp.class.getResourceAsStream("any.png"));

          public void start(final Stage stage) throws Exception {
              System.out.println("java.version: " + System.getProperty("java.version"));
              System.out.println("javafx.runtime.version: " + System.getProperty("javafx.runtime.version"));

              // create a label and call setGraphic() with an ImageView node
              Label label1 = new Label("onMouseClick on icon does not work");

              // create a label and call setGraphic() with an ImageView node wrapped in an HBox node
              Label label2 = new Label("onMouseClick on icon WORKS");

              // put everything into an VBox
              VBox vbox = new VBox();
              vbox.setPadding(new Insets(20));
              vbox.getChildren().addAll(label1, label2);

              stage.setScene(new Scene(vbox));

          private ImageView createImageView() {
              ImageView imageView = new ImageView(image);
              imageView.setOnMouseClicked(new EventHandler<MouseEvent>() {
                  public void handle(final MouseEvent mouseEvent) {
                      System.out.println("CLICKED"); // will only be seen when the ImageView is wrapped in a HBox
              return imageView;

          private Node wrapInHBox(final ImageView imageView) {
              HBox result = new HBox();
              return result;

          public static void main(final String[] args) {




            Unassigned Unassigned
            jhohmuthjfx Jens Hohmuth (Inactive)
            0 Vote for this issue
            2 Start watching this issue