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) |