2013-05-21 14 views
6

removeEventHandler()はokですが、ハンドラで参照を保持しないとどうなりますか?javaFX。すべてのイベントハンドラ(フィルタ)を削除します

イベントハンドラ(フィルタ)をイベントタイプ別に、またはすべてのハンドラをJavaFXから削除できますか。 scene.Nodeインスタンス?私はどこかのハンドラのリストが存在していたと思うし、それをトラバースして、私が望むものを取り除くことができる。

答えて

2

イベントハンドラ(フィルタ)をイベントタイプ別に、またはすべてのハンドラをjavafx.scene.Nodeインスタンスから削除できますか?

元々は参照していなかったイベントハンドラやフィルタを削除することはできません。 add extra event filtersを使用して、タイプ別にイベントの処理を除外するか、またはset your own event dispatcher on the nodeを使用してカスタムディスパッチャに必要なイベントのみをノードの標準イベントディスパッチャに転送させることができます。

ハンドラのリストが存在し、それを横断して私が望むものを削除できると思います。

はい、それはprivate implementation of the Nodeに埋め込まれています。そのため、プライベートノードコードをハックすることはおそらくありません。

2

自分自身を削除するイベントハンドラを作成する方法を探しているうちに、私はこの問題に遭遇しました。私の質問に対する答えがここにありました。それがあなたを助けるかどうかはわかりません。ここで 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 
ある
関連する問題