我希望能够删除使用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时执行此操作还是需要使用内部类?
谢谢!
答案 0 :(得分:2)
只需存储它:
EventHandler<MouseEvent> myHandler = ...
然后添加过滤器:
addEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);
以后删除它:
removeEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);