如何删除使用lambda

时间:2015-05-11 16:16:27

标签: lambda event-handling javafx-8

我希望能够删除使用lambda设置的事件过滤器。我不确定这是否可行?

我看过这个使用内部类的例子:http://www.java2s.com/Tutorials/Java/JavaFX/1120__JavaFX_Event_Filter.htm

但是如果我像这样创建我的过滤器:

addEventFilter(MouseEvent.MOUSE_CLICKED, event -> {
        PaneWithSelectionListener parent = (PaneWithSelectionListener)getParent();
        parent.selectAnnotation(this);
        enableTextEditing(event);
        event.consume();
    });

我希望能够删除它 - 我可以在使用lambdas时执行此操作还是需要使用内部类?

谢谢!

1 个答案:

答案 0 :(得分:2)

只需存储它:

EventHandler<MouseEvent> myHandler = ...

然后添加过滤器:

addEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);

以后删除它:

removeEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);