事件处理java中的混乱

时间:2017-11-26 08:44:51

标签: java swing event-handling

我搜索了很多关于事件处理的事情,结果更加困惑。 我的问题很简单:

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函数的功能名称不一样?为什么甚至需要发送? 当接口内的方法不包含代码时,为什么我们甚至需要实现接口? 谢谢

1 个答案:

答案 0 :(得分:1)

  

这里,按钮已经为自己注册了动作侦听器,并且已将动作传递给actionPerformed(?)

不,hand是对Handler实例的引用。 Handler是一个实现ActionListener接口的类。

aButton.addActionListener(hand)Handler实例引用注册为hand,作为单击按钮时要调用的动作侦听器。

单击该按钮时,将执行该actionPerformed实例的Handler方法。

  

当接口内的方法不包含代码时,为什么我们甚至需要实现接口?

这只是一个例子。您应该在actionPerformed中添加代码(以替换//event handling code注释)。否则,不需要注册Handler实例,因为它什么都不做。