任意のペインを「マウス透過」にして、クリック イベントを消費せず、その下のスタックにパススルーできるようにすることができます。
以下にサンプル コードを示します。この例では、スタック内に 4 つのペインを設定します。最初は mainPane だけがクリックを受け入れます。
StackPane rootPane = new StackPane();
VBox mainPane = new VBox(80);
BorderPane helpOverlayPane = new BorderPane();
helpOverlayPane.setMouseTransparent(true);
Canvas fullScreenOverlayCanvas = new Canvas();
fullScreenOverlayCanvas.setMouseTransparent(true);
VBox debugPane = new VBox();
debugPane.setAlignment(Pos.BASELINE_RIGHT);
AnchorPane debugOverlay = new AnchorPane();
debugOverlay.setMouseTransparent(true);
debugOverlay.getChildren().add(debugPane);
AnchorPane.setBottomAnchor(debugPane, 80.0);
AnchorPane.setRightAnchor(debugPane, 20.0);
rootPane.getChildren().addAll(mainPane, fullScreenOverlayCanvas, debugOverlay, helpOverlayPane);
ここで、キャンバスを使用して上に描画する場合は、そのスタックに対してのみマウスの透明度を false に変更し、その上にあるすべてのペインをマウスの透明度に保ちます。
fullScreenOverlayCanvas.setMouseTransparent(false);
debugOverlay.setMouseTransparent(true);
fullScreenOverlayCanvas.setVisible(true);
doSomethingWithCanvasThatNeedsMouseClicks();
PS私は持っていたコードを編集したので、そのままでは動かないかもしれません。また、ペインの一部のみを透明にする方法については、
JavaFX Pass MouseEvents through Transparent Node to Childrenの説明を参照してください。