removeEventHandler()
はokですが、ハンドラで参照を保持しないとどうなりますか?javaFX。すべてのイベントハンドラ(フィルタ)を削除します
イベントハンドラ(フィルタ)をイベントタイプ別に、またはすべてのハンドラをJavaFX
から削除できますか。 scene.Node
インスタンス?私はどこかのハンドラのリストが存在していたと思うし、それをトラバースして、私が望むものを取り除くことができる。
removeEventHandler()
はokですが、ハンドラで参照を保持しないとどうなりますか?javaFX。すべてのイベントハンドラ(フィルタ)を削除します
イベントハンドラ(フィルタ)をイベントタイプ別に、またはすべてのハンドラをJavaFX
から削除できますか。 scene.Node
インスタンス?私はどこかのハンドラのリストが存在していたと思うし、それをトラバースして、私が望むものを取り除くことができる。
イベントハンドラ(フィルタ)をイベントタイプ別に、またはすべてのハンドラをjavafx.scene.Nodeインスタンスから削除できますか?
元々は参照していなかったイベントハンドラやフィルタを削除することはできません。 add extra event filtersを使用して、タイプ別にイベントの処理を除外するか、またはset your own event dispatcher on the nodeを使用してカスタムディスパッチャに必要なイベントのみをノードの標準イベントディスパッチャに転送させることができます。
ハンドラのリストが存在し、それを横断して私が望むものを削除できると思います。
はい、それはprivate implementation of the Nodeに埋め込まれています。そのため、プライベートノードコードをハックすることはおそらくありません。
自分自身を削除するイベントハンドラを作成する方法を探しているうちに、私はこの問題に遭遇しました。私の質問に対する答えがここにありました。それがあなたを助けるかどうかはわかりません。ここで javafx have an eventfilter remove itself
例
EventHandler<MouseEvent> object_clicked=new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
// on click actions here
my_node.removeEventFilter(MouseEvent.MOUSE_CLICKED, this); // at the bottom
}
};
my_node.addEventFilter(MouseEvent.MOUSE_CLICKED, object_clicked); // add the eventhandler to the node
ある