这种方法有什么用?
我经常遇到这种注册动作监听器的方式。
虽然我最近一直在使用这种方法,但我不明白这是怎么回事
这是一个:{
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
的代码。
请清楚解释2个片段。
您在技术上确实实现了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之外,它还使其可以在类中的其他位置使用。