按下按钮时如何自动调用EventHandler <ActionEvent>?

为了测试我对Java接口的理解,我将按钮单击事件处理程序中的匿名类拉到了一个单独的类中-该类起作用了,但是我不了解它为什么起作用。

我原本希望自己必须调用类的handle()方法,但似乎需要将EventHandler实现作为参数传递。单击按钮显然是在调用handle()方法,但我不清楚为什么。

匿名类版本

Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnaction(new EventHandler<actionEvent>() { 
    @Override
    public void handle(actionEvent event) {
        System.out.println("Hello World!");
      }
  });

单独的班级版本

public class HelloWorldEventHandler implements EventHandler<actionEvent> {

        public void handle(actionEvent event) {
                System.out.println("Hello World!");
            }                
}
btn.setText("Say 'Hello World'"); 
HelloWorldEventHandler handler = new HelloWorldEventHandler();
btn.setOnaction(handler);
rtgjvkjk564 回答:按下按钮时如何自动调用EventHandler <ActionEvent>?

它是part of the JavaFX Button definition。检出setOnAction()onActionProperty()

onActionProperty()方法返回您提供的EventHandler的包装版本。它将返回的对象描述为:

  

按钮的动作,每当触发按钮时就会调用该动作。这可能是由于用户用鼠标单击按钮,触摸事件或按键,或者开发人员以编程方式调用了fire()方法。

也就是说,当您setOnAction()时,只要触发按钮,就会调用您正在设置的内容

本文链接:https://www.f2er.com/3163791.html

大家都在问