windowListener和ActionListener的区别

package NoteBook;


import java.awt.*;
import java.awt.event.*;
/**
 * NoteBook-BookFrame.
 *
 * @author pangshuyue
 * @version 1.00 09/10/24
 */
  class NoteBookFrame extends Frame implements ActionListener , KeyListener
     {
    
      TextArea textarea ;
      MenuBar menuBar;
      Menu Open,Edit,Formt,See,Help;
      MenuItem NewFile,OpenFile,Save,AsSave,SetUp,Print,Exit;
      MenuItem Repeal,Cut,Copy,Stick,Delete,Lookup,Lookupnext,Exchange,Goto,All,Timedate;
      MenuItem Rand,FontSize,Modo,MainHelp,AboutBook;
      OpenClass  openclass ;
      EditClass  editclass ;
      FormateClass formateclass;
      SeeClass  seeclass;
      HelpClass helpclass;
       
      public NoteBookFrame() {
        
         textarea = new TextArea(40,500);
         
         openclass = new OpenClass(this);
         editclass = new EditClass(this);
         formateclass = new FormateClass(this);
         seeclass = new SeeClass(this);
         helpclass = new HelpClass(this);
         
         menuBar = new MenuBar();
        //创建菜单条
         Open = new Menu("打开(F)");
         Edit = new Menu("编辑(E)");
         Formt = new Menu("格式(O)");
         See = new Menu("查看(V)");
         Help = new Menu("帮助(H)");
        //创建菜单
         NewFile = new MenuItem("新建");
         OpenFile = new MenuItem("打开");
         Save = new MenuItem("保存");
         AsSave = new MenuItem("另存为(A)...      ");
         SetUp = new MenuItem("页面设置(U)        ");
         Print = new MenuItem("打印(P) ...");
         Exit = new MenuItem("退出(X)");
        //开始菜单中的各菜单项
        
        
        Repeal = new MenuItem("撤销(U)");
        Cut= new MenuItem("剪切(T)");
        Copy= new MenuItem("复制(C)");
        Stick= new MenuItem("粘贴(P)");
        Delete= new MenuItem("删除(L)Del");
        Lookup= new MenuItem("查找(F)");
        Lookupnext= new MenuItem("查找下一个(N)          F3");
        Exchange= new MenuItem("替换(R)");
        Goto= new MenuItem("转到(G)");
        All= new MenuItem("全选(A)");
        Timedate= new MenuItem("时间/日期(D)              F5");
        //编辑菜单中的各菜单项
      
        Rand  = new MenuItem("自动换行(W)   ");
        FontSize  = new MenuItem("字体(F)...    ");
        //格式菜单中的各菜单项
        
        Modo = new MenuItem("状态栏(S)");
        //查看菜单中的各菜单项
        
        MainHelp = new MenuItem("帮助主题(H)   ");
        AboutBook = new MenuItem("关于记事本(A) ");
        //帮助菜单中的各菜单项
        
        Open.add(NewFile);
        Open.add(OpenFile);
        Open.add(Save);
        Open.add(AsSave);
        Open.addSeparator();
        Open.add(SetUp);
        Open.add(Print);
        Open.addSeparator();//添加分割线
        Open.add(Exit);
        //在打开菜单中加菜单项
        
        Edit.add(Repeal);
        Edit.addSeparator();
        Edit.add(Cut);
        Edit.add(Copy);
        Edit.add(Stick);
        Edit.add(Delete);
        Edit.addSeparator();
        Edit.add(Lookup);
        Edit.add(Lookupnext);
        Edit.add(Exchange);
        Edit.add(Goto);
        Edit.addSeparator();
        Edit.add(All);
        Edit.add(Timedate);
        //在编辑菜单中添加菜单项
        
        Formt.add(Rand);
        Formt.add(FontSize);
        //格式菜单中添加菜单项
        
        See.add(Modo);
        //查看菜单中添加菜单项
        
        Help.add(MainHelp);
        Help.addSeparator(); 
        Help.add(AboutBook);
        //帮助菜单中添加菜单项
        
        menuBar.add(Open);
        menuBar.add(Edit);
        menuBar.add(Formt);
        menuBar.add(See);
        menuBar.add(Help);
        //菜单条中添加菜单
        
        NewFile.setShortcut(new MenuShortcut(KeyEvent.VK_N));
        OpenFile.setShortcut(new MenuShortcut(KeyEvent.VK_O));
        Save.setShortcut(new MenuShortcut(KeyEvent.VK_S));
        Print.setShortcut(new MenuShortcut(KeyEvent.VK_P));
        Repeal.setShortcut(new MenuShortcut(KeyEvent.VK_Z));
        Cut.setShortcut(new MenuShortcut(KeyEvent.VK_X));
        Copy.setShortcut(new MenuShortcut(KeyEvent.VK_C));
        Stick.setShortcut(new MenuShortcut(KeyEvent.VK_V));
        Lookup.setShortcut(new MenuShortcut(KeyEvent.VK_F));
        Exchange.setShortcut(new MenuShortcut(KeyEvent.VK_H));
        Goto.setShortcut(new MenuShortcut(KeyEvent.VK_G));
        All.setShortcut(new MenuShortcut(KeyEvent.VK_A));
        //添加菜单项中的各项的快捷键
        
        setTitle("记事本");
        setMenuBar(menuBar);//窗口中添加菜单条
        add(textarea);
        setBounds(500,150,400,400);
        
        textarea.addKeyListener(this);
        //注册文本域的键盘事件
        
        NewFile.addActionListener(this);
        OpenFile.addActionListener(this);
        Save.addActionListener(this);
        AsSave.addActionListener(this);
        SetUp.addActionListener(this);
        Print.addActionListener(this);
        //注册监听打开菜单中的各项
        
        Repeal.addActionListener(this);
        Cut.addActionListener(this);
        Copy.addActionListener(this);
        Stick.addActionListener(this);
        Delete.addActionListener(this);
        Lookup.addActionListener(this);
        Lookupnext.addActionListener(this);
        Exchange.addActionListener(this);
        Goto.addActionListener(this);
        All.addActionListener(this);
        Timedate.addActionListener(this);
        //注册监听编辑菜单中的各项
        
        Rand.addActionListener(this);
        FontSize.addActionListener(this);
        //注册监听格式菜单中的各项
        
        Modo.addActionListener(this);
        //注册监听查看菜单中的各项
        
        MainHelp.addActionListener(this);
        AboutBook.addActionListener(this);
        //注册监听帮助菜单中的各项
        
        // Add window listener.
        this.addWindowListener
        (
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    NoteBookFrame.this.windowClosed();
                }
            }
        );
        
        // Add action listener.for the menu button
        Exit.addActionListener
        (
            new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    NoteBookFrame.this.windowClosed();
                }
            }
        );  
    }
    
    
    /**
     * Shutdown procedure when run as an application.
     */
    protected void windowClosed() {
   
    // TODO: Check if it is safe to close the application
   
        // Exit application.
        System.exit(0);
    }
    public void actionPerformed(ActionEvent e)
      {
       if(e.getSource() == NewFile){openclass.New();}
       if(e.getSource() == OpenFile){openclass.Open();}
       if(e.getSource() == Save){openclass.Save();}
       if(e.getSource() == AsSave){openclass.AsSave();}
       if(e.getSource() == SetUp){openclass.SetUp();}
       if(e.getSource() == Print){openclass.Print();}
       if(e.getSource() == Exit){System.out.println("退出");}
       //打开菜单事件的实现
       
       if(e.getSource() == Repeal){editclass.Repeal();}
       if(e.getSource() == Cut){editclass.Cut();}
       if(e.getSource() == Copy){editclass.Copy();}
       if(e.getSource() == Stick){editclass.Stick();}
       if(e.getSource() == Delete){editclass.Delete();}
       if(e.getSource() == Lookup){editclass.LookUp();}
       if(e.getSource() == Lookupnext){editclass.LookUpNext();}
       if(e.getSource() == Exchange){editclass.Exchange();}
       if(e.getSource() == Goto){editclass.Goto();}
       if(e.getSource() == All){editclass.All();}
       if(e.getSource() == Timedate){editclass.TimeDate();}
       //编辑菜单的实现
       
       if(e.getSource() == Rand){formateclass.Rand();}
       if(e.getSource() == FontSize){formateclass.FontSize();}
       //格式菜单的实现
       
       if(e.getSource() ==Modo ){seeclass.Modo();}
       //查看菜单的实现
       
       if(e.getSource() == MainHelp){helpclass.MainHeip();}
       if(e.getSource() == AboutBook){helpclass.AboutBook();}
       //帮助菜单的实现
      
      }
    public void keyPressed(KeyEvent key)//处理按下某键时
    {
   // 文本区的键盘事件的实现
    } 
    public void keyTyped(KeyEvent key){}//处理按下后又恢复的事件
    public void keyReleased(KeyEvent key){} //恢复时要掉用的事件
    

}


如这段代码所示,在处理WindowsClosed()方法时,用到了两个Listener,分别是WindowsListener和ActionListener,询问老师得知WindowsListener是将WindowsClosed()这个方法处理后的信息发送给应用程序,而ActionListener是发生了一个动作时用到的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值