2016-10-14 149 views
0

我有一個相當簡單的問題,但我不明白爲什麼這是... 我有一個SceneAnchorPane作爲父節點。這個Pane創建自定義Circle s每當我點擊它。這按預期工作。
那些自定義Circle也有事件處理程序。
如果我點擊一個圓圈,這個事件處理程序被觸發,但父母的事件處理程序也被觸發,導致創建一個新的自定義Circle
防止父節點也處理事件

任何想法我可能做錯了什麼?

+0

這將有助於您發佈代碼 – MikeJRamsey56

回答

1

事件會自動傳遞給父代Node(或Scene代碼爲Node),除非您在子代的事件處理程序中使用它們。要消費該事件,請在Circle的事件處理程序中調用Event.consume(),例如,

pane.setOnMouseClicked(evt -> { 
    Circle circle = ... 

    pane.getChildren().add(circle); 

    circle.setOnMouseClicked(event -> { 
     event.consume(); 
     // TODO: circle specific event handling 
    }); 
}); 
+0

謝謝!這工作完美 – RoiEX