Java EventHandler<;ActionEvent>;按下按钮时是否自动调用?
为了测试我对Java接口的理解,我将按钮点击事件处理程序中的匿名类拉入了一个单独的类中——这个类已经工作了——但我不明白它为什么工作 我本来希望自己必须调用类的Java EventHandler<;ActionEvent>;按下按钮时是否自动调用?,java,javafx,Java,Javafx,为了测试我对Java接口的理解,我将按钮点击事件处理程序中的匿名类拉入了一个单独的类中——这个类已经工作了——但我不明白它为什么工作 我本来希望自己必须调用类的handle()方法,但似乎我只需要将EventHandler实现作为参数传递。单击按钮显然是在调用handle()方法,我只是不清楚为什么会这样 匿名类版本 Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHand
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!");
}
}
是的。查看setOnAction()
和onActionProperty()
onActionProperty()
方法返回您提供的EventHandler
的包装版本。它将其返回的对象描述为:
按钮的操作,每当启动按钮时都会调用该操作。这可能是由于用户用鼠标单击按钮,或者通过触摸事件,或者通过按键,或者如果开发人员以编程方式调用fire()方法
也就是说,当您setOnAction()
时,只要启动按钮,就会调用您正在设置的内容
btn.setText("Say 'Hello World'");
HelloWorldEventHandler handler = new HelloWorldEventHandler();
btn.setOnAction(handler);