Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1328039
  • 博文数量: 131
  • 博客积分: 9950
  • 博客等级: 中将
  • 技术积分: 1492
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-05 18:32
文章分类

全部博文(131)

文章存档

2008年(3)

2007年(37)

2006年(91)

我的朋友

分类: Java

2007-07-08 03:33:08

import java.awt.*;
import java.awt.event.*;

class Herwindow extends Frame implements ActionListener{
    MenuBar menubar;Menu menu;MenuItem item;
    MenuShortcut shortcut = new MenuShortcut(KeyEvent.VK_E);
    Herwindow(String s){
        super(s);
        setSize(160,170);
        setVisible(true);
        menubar = new MenuBar();
        menu = new Menu("文件");
        item = new MenuItem("退出");
        item.setShortcut(shortcut);//设置菜单单选项的键盘快捷键
        item.addActionListener(this);
        menu.add(item);
        menubar.add(menu);
        setMenuBar(menubar);
        }
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==item){
            System.exit(0);
            }
        }
    }
   public class Test44{
       public static void main(String args[]){
           Herwindow window = new Herwindow("法制之窗");
           }
       }

1.设置菜单项的快捷键
可以使用MenuShotcut类为菜单项设置快捷键,该类的一个构造方法是:
MenuShotcut(int key);
其中Key可以取值KeyEvent.VK_A~KeyEvent.VK_Z,也可以取a~z。一个菜单项使用setShotcut(MenuShotcut k)方法来设置快捷键。
2.MenuShotBar shotcut = new MenuShotcut(KeyEvent.VK_E);
设置的快捷键为(Ctrl+E)
3.在这个程序中:分别对菜单条类MenuBar、菜单项类MenuItem、菜单类Menu、菜单项快捷键类MenuShotcut分别对其建立对象的引用menubar item menu shotcut,命名菜单的名称为“文件”、菜单项的名称为“退出”,item.setShotcut(shotcut);设置菜单项的键盘快捷键并对菜单项进行监听。把菜单项的对象引用加入到菜单的对象引用中,把菜单对象的引用加入到菜单条对象的引用中。setMenuBar(menubar);把menubar参数传入到MenuBar中,并重新设置MenuBar。“public void actionPerformed(ActionEvent e)”实现对菜单项item的监听。
4.调用HerWindow类




import java.awt.*;
import java.awt.event.*;

class MyFrame extends Frame implements WindowListener{
    TextArea text;
    MyFrame(String s){
        super(s);
        setBounds(100,100,200,300);
        setVisible(true);
        text = new TextArea();
        add(text,BorderLayout.CENTER);
        addWindowListener(this);
        validate();
        }
    public void windowActivated(WindowEvent e){
        text.append("\n 我被激活了");
        validate();
        }
    public void windowDeactivated(WindowEvent e){
        text.append("\n 我不是激活状态");
        setBounds(0,0,400,400);
        validate();
        }
    public void windowClosing(WindowEvent e){
        text.append("\n 窗口正在关闭呢");
        dispose();
        }
    public void windowClosed(WindowEvent e){
        text.append("\n 程序运行结束运行");
        System.exit(0);
        }
    public void windowIconified(WindowEvent e){
        text.append("\n 我图表化了");
        }
    public void windowDeiconified(WindowEvent e){
        text.append("\n 我撤销图表化了");
        setBounds(0,0,400,400);
        validate();
        }
    public void windowOpened(WindowEvent e){
       
        }
    }
    public class Test45{
        public static void main(String args[]){
            new MyFrame("窗口");
            }
        }


Frame是Window的子类,凡是Window子类创建的对象都可以引发WindowEvent类型事件,即窗口事件。
WindowListener接口
当一个Frame窗口被激活、撤销激活、打开、关闭、图标化或撤销图标化时,就引发了窗口事件,即WindowEvent创建一个窗口对象。WindowEvent创建的事件对象调用getWindow()方法可以获得引发窗口事件的窗口。窗口使用addWindowlistener方法获得监视器,创建监视对象必须实现WindowListener接口,该接口中有7个不同的方法分别是:
(1)public void windowActivated(WindowEvent e)当窗口从非激活状态到激活时,窗口的监视器调用该方法。
(2)public void windowDeactivated(WindowEvent e)当窗口从激活状态到非激活状态时,窗口的监视器调用该方法。
(3)public void windowClosing(WindowEvent e)当窗口正在被关闭时,窗口的监视器调用该方法。
(4)public void windowClosed(WindowEvent e)当窗口关闭时,窗口的监视器调用该方法。
(5)public void windowIconified(WindowEvent e)当窗口图标化时,窗口的监视器调用该方法。
(6)public void windowDeiconified(WindowEvent e)当图标撤销图标花时,窗口的监视器调用该方法。
(7)public void windowOpened(WindowEvent e)当窗口打开时,窗口的监视器调用该方法。
注:当点击窗口上的关闭图标时,监视器首先调用WindowClosing方法,如果在该方法中使用System.exit(0);退出程序时,那么监视器就没有机会再调用windowClosed方法。
当点击窗口的图标化按钮时,监视器调用windowIconified方法后,还将调用windowDeactivated方法。当撤销窗口的图标化时,监视器调用windowDeiconified方法后还会调用windowActivated方法。

阅读(2309) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~