如何删除使用 lambda 创建的 JavaFX 中的 EventFilter
How can I remove an EventFilter in JavaFX created with a lambda
我希望能够删除使用 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();
});
我希望能够删除它 - 我可以在使用 lambda 时执行此操作还是需要使用内部 类?
谢谢!
就存储它:
EventHandler<MouseEvent> myHandler = ...
然后添加过滤器:
addEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);
稍后将其删除:
removeEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);
我希望能够删除使用 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();
});
我希望能够删除它 - 我可以在使用 lambda 时执行此操作还是需要使用内部 类?
谢谢!
就存储它:
EventHandler<MouseEvent> myHandler = ...
然后添加过滤器:
addEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);
稍后将其删除:
removeEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);