我搜索了很多关于事件处理的事情,结果更加困惑。 我的问题很简单:
Handler hand = new Handler();
aButton.addActionListener(hand);
private class Handler implements ActionListener{
public void actionPerformed(ActionEvent ae)
{
//event handling code
}
}
这里,按钮已经为自己注册了Action Listener,它已经将 hand 传递给actionPerformed(?), hand 是如何通过 hand 到达actionPerformed函数的功能名称不一样?为什么甚至需要发送手? 当接口内的方法不包含代码时,为什么我们甚至需要实现接口? 谢谢
答案 0 :(得分:1)
这里,按钮已经为自己注册了动作侦听器,并且已将动作传递给actionPerformed(?)
不,hand
是对Handler
实例的引用。 Handler
是一个实现ActionListener
接口的类。
aButton.addActionListener(hand)
将Handler
实例引用注册为hand
,作为单击按钮时要调用的动作侦听器。
单击该按钮时,将执行该actionPerformed
实例的Handler
方法。
当接口内的方法不包含代码时,为什么我们甚至需要实现接口?
这只是一个例子。您应该在actionPerformed
中添加代码(以替换//event handling code
注释)。否则,不需要注册Handler
实例,因为它什么都不做。