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){} //恢复时要掉用的事件
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是发生了一个动作时用到的。