lambda - 如何删除使用 lambda 创建的 JavaFX 中的 EventFilter

标签 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();
    });

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

谢谢!

最佳答案

只是存储它:

EventHandler<MouseEvent> myHandler = ...

然后添加过滤器:

addEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);

稍后将其删除:

removeEventFilter(MouseEvent.MOUSE_CLICKED, myHandler);

关于lambda - 如何删除使用 lambda 创建的 JavaFX 中的 EventFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30172678/

相关文章:

java - 抽象 Action lambda

c++ - 在基于 lambda 的 foreach 循环中模拟 `continue;` , `break;`

java - 这是在 lambda 函数内设置/删除 boolean 标志的最佳方法

javascript - 在 Vue.js 中触发自定义 "change"事件是否安全?

c# - Global.asax 中的自动事件连接

javafx - 页面间动画效果变化

c++ - 如何在 C++ 中使用可变参数泛型 lambda 计算总和?

c# - 如何取消winform中的任何事件?

JavaFX 自定义 TableCell 监听

java - 以编程方式最小化和最大化 Javafx 应用程序