我刚刚开始学习如何使用动作监听器。据我了解,它的工作原理如下:
有一些类默认包含“addActionListener”方法(例如按钮类)。
使用此方法,我们向对象添加一个动作侦听器。例如:listenedObject.addActionListener(listeningObject)
.
当执行带有“listeningObject”的操作时,将调用“listeningObject”的“actionPerformed”方法。所以,这意味着当我们为监听对象编写一个类时,我们需要在其中添加“actionPerformed”方法。
我不清楚的是,我们是否应该为我们想要监听的每个对象创建一个新类。在我看来,这并不是一个优雅的解决方案。另一方面,如果我们对所有(或至少许多)对象有一个动作侦听器类,那么我们就会遇到问题,因为此类的实例将不知道哪个对象正在调用“actionPerformed”方法(并且我们需要要知道,因为 actionPerformed 执行的操作会根据调用此方法的人的不同而有所不同)。
在我看来,对于我们需要创建的每个监听对象都是“个人”动作监听器,我们可以通过为动作监听器的相应字段设置特定值来实现。但我不确定这是标准方法吗?人们通常怎么做?
从我个人的经验来看,处理这个问题的最常见方法是简单地创建一个匿名内联类。像这样:
listenedObject.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
// Your action handling code in here
}
});
我经常看到人们调用包含 ListenedObject 的对象的方法。例如,在具有按钮的对话框中:
myOkayButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
okayButtonPressed();
}
});
然后在对话框类中:
private void okayButtonPressed() {
// Do what we need to do
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)