Event Handling in JavaFXを理解しようとしていましたが、この行が見つかりました。JavaFXでイベントが消費される意味は何ですか
ルートは、イベントフィルタとイベントハンドラとして変更することができます。 ルートプロセスはイベントを処理します。また、イベントフィルタまたはイベントハンドラ がイベントを任意の時点で消費する場合、初期ルートの一部のノードでは、 がイベントを受信しないことがあります。
イベントの消費の意味を説明できますか?
Event Handling in JavaFXを理解しようとしていましたが、この行が見つかりました。JavaFXでイベントが消費される意味は何ですか
ルートは、イベントフィルタとイベントハンドラとして変更することができます。 ルートプロセスはイベントを処理します。また、イベントフィルタまたはイベントハンドラ がイベントを任意の時点で消費する場合、初期ルートの一部のノードでは、 がイベントを受信しないことがあります。
イベントの消費の意味を説明できますか?
イベントは特定のルートに沿って渡されます。ほとんどの場合(例えば、マウス/キーイベント)、ルートはScene
のルートNode
から始まり、ルートNode
からシーングラフのターゲットNode
までのパスにすべてNode
が含まれます。ターゲットNode
へのルートでは、イベントフィルタが実行され、それらのフィルタのいずれかがイベントを消費する必要がある場合、これはイベントのそれ以上の処理を停止します。イベントがNode
のターゲットに到達すると、 "travels"が何らかのイベントを呼び出すルートに戻る場合、途中でハンドラが続きます。イベントの処理は、イベントを消費することによってもそこで停止することができます。
例:あなたはrect
をクリックすると
@Override
public void start(Stage primaryStage) {
Rectangle rect = new Rectangle(50, 50);
StackPane root = new StackPane(rect);
rect.addEventFilter(MouseEvent.MOUSE_CLICKED, evt -> {
System.out.println("rect click(filter)");
// evt.consume();
});
root.addEventFilter(MouseEvent.MOUSE_CLICKED, evt -> {
System.out.println("root click(filter)");
// evt.consume();
});
root.setOnMouseClicked(evt -> {
System.out.println("root click(handler)");
// evt.consume();
});
rect.setOnMouseClicked(evt -> {
System.out.println("rect click(handler)");
// evt.consume();
});
Scene scene = new Scene(root, 200, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
、イベント処理がroot
Node
から始まります。ここでフィルタが実行されます。イベントがフィルタで消費されない場合は、rect
Node
に渡され、そこでイベントフィルタがイベントを受信します。そのイベントがフィルタによって消費されない場合、rect
というイベントハンドラがイベントを受け取ります。そのイベントハンドラによってイベントがconnsumedされていない場合、root
Node
のイベントハンドラがイベントを受け取ります。
だけevt.consume()
呼び出しのいくつかのコメントを解除して...お返事のための
おかげで何が起こるかを参照してください。便利なメソッド 'setOnAction'などのイベントハンドルと' addEventHandler() 'の違いは何ですか? – UnKnown
@知らない新しい質問として新しい質問をするのが最善です。 – jewelsea