user5476686
user5476686

Reputation: 13

javafx 8 overlapping layers eventhandling

I have two layers in my program with different elements in each layer. The two layers are overlapping but the elements in the layers are not. I want to show a tooltip when the mouse hovers over a node in each layer but right now the top layer only gets the event.

Below is attached a minimal example:

public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
    StackPane root = new StackPane();
    Pane p1 = new Pane();
    Pane p2 = new Pane();

    Arc arc = new Arc(150,150,100,100,0,360);
    arc.setType(ArcType.CHORD);
    arc.setFill(null);
    arc.setStroke(Color.BLUE);
    arc.setStrokeWidth(20);

    Rectangle rectangle = new Rectangle(100,100);
    rectangle.setX(100);
    rectangle.setY(100);

    Tooltip.install(arc, new Tooltip("Semiring"));
    Tooltip .install(rectangle,new Tooltip("Rectangle"));

    p1.getChildren().add(arc);
    p2.getChildren().add(rectangle);

    root.getChildren().addAll(p2,p1);
    primaryStage.setScene(new Scene(root, 300, 300));
    primaryStage.show();
}


    public static void main(String[] args) {
        launch(args);
    }
}

Nothing happens on the rectangle

Upvotes: 0

Views: 312

Answers (1)

James_D
James_D

Reputation: 209438

Use

p1.setPickOnBounds(false);

This essentially means mouse events are only delivered to p1 if the mouse is over a non-transparent pixel in p1. Thus when the mouse is not over the arc, mouse handling is delegated to p2, as required.

Upvotes: 1

Related Questions