日期:2014-05-20  浏览次数:20644 次

关于AddActionlistener???
“……

fileMenu_Exit.addActionListener(this);  
          JMenu   editMenu   =   new   JMenu( "编辑(E) ",   true);editMenu.setMnemonic( 'E ');  
    editMenu.addActionListener(new   ActionListener()
      {
        public   void   actionPerformed(ActionEvent   e){
          checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性
        }
      }
    );

……”

我在看黄斌编的记事本原代码时,觉得有些不明白:

  1,fileMenu_Exit调用addActionListener方法没什么的,可以理解,因为它确实有Exit可以执行的,可属于JMenu类的editMenu对象有什么必要调用这个方法呢??

2,在上面editMenu的调用过程时,为什么又与fileMenu_Exit调用时使用的参数不同,一个是直接用this(我对这个this在这的使用也不明白的),另一个却用另一方式,我想部这两种不同的调用有什么本质上的区别????
 



------解决方案--------------------
fileMenu_Exit.addActionListener(this);
~~~~~~~~~~~~~~~~~~~~
说明this(就是当前类)实现了ActionListener接口,它会调用该类中的actionPerformed(ActionEvent e)方法来执行菜单动作。


editMenu.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性
}
}
);
调用这里的actionPerformed(ActionEvent e)方法。

以上两种写法本质上是一样的,都是给菜单一个listener,执行的时候找到相应的actionPerformed()方法去执行。
二者没有必然联系,LZ只需搞明白接口实现的相关概念就清楚了。