JavaFX的。删除所有事件处理程序(过滤器)

时间:2013-05-21 19:08:29

标签: javafx-2

removeEventHandler()没问题,但是如果我不继续引用处理程序呢?

我可以按事件类型删除任何事件处理程序(过滤器),甚至可以删除JavaFX中的所有处理程序。 scene.Node实例?我想在某个地方存在一个处理程序列表,我可以遍历它,并删除我想要的内容。

2 个答案:

答案 0 :(得分:3)

  

我可以按事件类型删除任何事件处理程序(过滤器),甚至可以从我的javafx.scene.Node实例中删除所有处理程序吗?

我认为您不能删除最初没有引用的事件处理程序或过滤器。您可以add extra event filters按类型过滤掉事件处理,也可以set your own event dispatcher on the node让自定义调度程序仅将您想要的事件转发给节点的标准事件调度程序。

  

我想在某个地方存在一个处理程序列表,我可以遍历它,并删除我想要的内容。

是的,但是它隐藏在private implementation of the Node内,因此您可能不想破解私有Node代码来执行此操作。

答案 1 :(得分:3)

我在寻找如何创建自我删除的事件处理程序时遇到了这个问题。我的问题的答案在这里,我不知道它是否会对你有所帮助。 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