JavaFX:如何注销按钮操作事件

JavaFX:如何注销按钮操作事件,java,javafx,Java,Javafx,我有一个按钮,它可以设置如下动作 moveRight.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { }}); moveRight.setOnAction(新的EventHandler(){ @凌驾 公共无效句柄(ActionEvent e){ }}); 如何从该按钮中删除此EventFilter?我尝试了removeve

我有一个按钮,它可以设置如下动作

moveRight.setOnAction(new EventHandler<ActionEvent>() {
@Override
            public void handle(ActionEvent e) {
}});
moveRight.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
}});

如何从该按钮中删除此EventFilter?我尝试了
removeventhandler
方法,但该方法的参数应该是什么?

以下调用实现了您想要的技巧:

moveRight.setOnAction(null);

以下调用实现了您想要的技巧:

moveRight.setOnAction(null);

你也可以禁止它被点击,它不再听动作

你也可以禁止它被点击,它不再听动作

因为我在你的问题下的评论几乎看不清,所以我发布了一个答案

根据您想要注册actionlistener的评论,删除它,然后重新注册同一个侦听器

实现这一目标的方法还有很多

1) 编写自己的处理程序:

EventHandler<ActionEvent> eh = new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        // CODE
    }
};
button.setOnAction(eh); //registered
button.setOnAction(null); //unregistered
button.setOnAction(eh); //re-registered
在handle方法中,可以通过event.getSource()获取调用方法的对象,这样就可以通过

Button b = (Button)event.getSource();

3) 创建其他一些实现javafx.event.EventHandler的类,并将其实例化为您的处理程序

因为我对你的问题的评论几乎看不清,所以我发布了一个答案

根据您想要注册actionlistener的评论,删除它,然后重新注册同一个侦听器

实现这一目标的方法还有很多

1) 编写自己的处理程序:

EventHandler<ActionEvent> eh = new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        // CODE
    }
};
button.setOnAction(eh); //registered
button.setOnAction(null); //unregistered
button.setOnAction(eh); //re-registered
在handle方法中,可以通过event.getSource()获取调用方法的对象,这样就可以通过

Button b = (Button)event.getSource();

3) 创建其他一些实现javafx.event.EventHandler的类,并将其实例化为您的处理程序

如果您只想删除它,您可以设置moveRight.setOnAction(null),要删除特定的处理程序,您必须为它保留一个引用。如果我想重新注册它,可能需要做什么…然后您必须像这样创建eventhandler:'eventhandler eh=new eventhandler(){@Override public void handle(ActionEvent ae){//Code};button.setOnAction(eh);//添加button.removeOnAction(eh);//删除'如果您只想删除它,可以设置moveRight.setOnAction(null),要删除特定的处理程序,您必须保留对它的引用。如果我想重新注册它,那么可能需要做什么…然后您必须像这样创建eventhandler:'eventhandler eh=new eventhandler(){@Override public void handle(ActionEvent ae){//Code};button.setOnAction(eh);//add button.removeOnAction(eh);//remove'