簡略化された問題:
別のノード「B」の上にある 1 つのノード「A」を、MouseEvents に対して半分透明にすることで、イベントが下層のノード「B」に到達するようにします。両方のノードは同じサイズですが、ノード「A」の背景画像は半分透明なので、ノード「B」の半分が表示されます。
本当の問題:
タブのメニューがあります。各タブをドラッグして、対応するメニュー レイヤーを展開できます。したがって、各タブ レイヤーは、部分的に透明な背景 (基本的にはポリゴン) を持つペインであり、その透明な部分は MouseEvents に対しても透明である必要があります。
図(まだ投稿できません。リンクを参照してください:タブの図、濃い緑色の線は緑色のペインの境界線です)は基本的な原則を示しています:タブのみが表示され、レイヤー自体を引っ張ることができると想像してくださいその内容を閲覧する権利。
問題は、Node 全体を透明にせずに、Node の領域を MouseEvents に対して透明にするにはどうすればよいかということです。
ご協力ありがとうございました!
アップデート:
簡単な問題を明確にするために、対応するコードを次に示します。
//Create parent group
Group root = new Group();
//Create linear gradient, so one side is transparent
Stop[] stops = new Stop[] { new Stop(0, Color.rgb(0, 255, 0, 0.0)), new Stop(1, Color.rgb(0, 255, 0, 1.0))};
LinearGradient lg1 = new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);
//Create the rectangles
Rectangle A = new Rectangle(100, 50, lg1);
Rectangle B = new Rectangle(100,50, Color.RED);
//Add eventHandlers
A.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println("Clicked A");
}
});
B.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println("Clicked B");
}
});
root.getChildren().addAll(B, A);
//Add to Scene..
お役に立てれば。