我经常遇到这种注册动作侦听器的方式。
虽然我最近一直在使用这种方法,但我不明白这是如何以及为什么的
这是一个:{
submit=new JButton("submit");
submit.addActionListener(new ActionListener(){ // line 1
public void actionPerformed(ActionEvent ae) {
submitActionPerformed(ae);
}
}); //action listener added
}
调用的方法:
public void submitActionPerformed(ActionEvent ae) {
// body
}
在这个方法中,我不需要实现ActionListener。为什么?
另外,请解释一下代码标记为line 1
does.
请清楚地解释这两个片段。
从技术上讲,您确实实现了 ActionListener。当你打电话时addActionListener
:
submit.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent ae) {
submitActionPerformed(ae);
}
});
您创建了一个实例匿名类,或实现的类ActionListener
没有名字。
换句话说,上面的代码片段本质上就像我们用本地内部类:
class MyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
submitActionPerformed(ae);
}
}
submit.addActionListener(new MyActionListener());
对于您的示例,匿名类仅调用您的成员方法之一,submitActionPerformed
。这样,你的方法可以有一个比actionPerformed
,并且它还使其可以在类中除 ActionListener 之外的其他地方使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)