2015-11-11 4 views
0

У меня есть два слоя в моей программе с разными элементами в каждом слое. Два слоя перекрываются, но элементы в слоях нет. Я хочу показать всплывающую подсказку, когда мышь нависает над узлом в каждом слое, но прямо сейчас верхний слой получает событие.javafx 8 перекрывающиеся слои eventhandling

Ниже прилагается минимальный пример:

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

ответ

0

Использование

p1.setPickOnBounds(false); 

Это по существу означает, что события мыши доставляются только p1 если мышь находится над непрозрачным пиксель в p1. Таким образом, когда мышь не находится над дугой, обработка мыши делегируется p2, если требуется.

+0

Спасибо, это было именно то, что мне нужно. Стоит отметить, что важно, какой слой p1.setPickOnBounds (false); установлен. Это должен быть внешний слой или он не работает. – user5476686