记事本软件能够打开、编辑、保存各种类型的文本文档,也能在文本文档中查找特定的关键字,此外在还能设定文本文档的字体、字号以及风格等。
记事本软件的运行结果如图22-1所示。
图22-1记事本软件界面
从图21-1可以看到:记事本程序运行开始后,在没有保存文档的情况下,标题栏自动显示“记事本--未命名”,这个标题表示了当前记事本的未命名状态。记事本有各种功能菜单,用户在记事本中可以编辑文本,此外为方便用户操作,记事本还提供了与Windows记事本完全相同的右键功能菜单。
此外,记事本还能弹出字体设置对话框和关键字查找对话框,它们分别如图22-2和图22-3所示。
图22-2设置字体对话框
图22-3查找关键字对话框
记事本项目总共由7个类组成,它们分别是:
记事本软件的主体是一个文本区,这个文本区被放置在一个滚动面板中,下面的代码是对滚动面板和文本区的定义。
- JScrollPane JSPane;//放置文本区的滚动面板
- JTextArea text;//记事本文本区
从图22-1可以看到:记事本界面除了一个文本区之外,其余的都是各种菜单和菜单项,这些菜单和菜单项的定义如下:
- MenuBar mainMenuBar;//菜单栏
- Jmenu fileMenu,editMenu,formatMenu,helpMenu;//各菜单
-
- //File菜单的菜单项
- JmenuItem newItem,openItem,saveItem, saveasItem,pageItem,printItem,exitItem;
- // 编辑菜单的菜单项
- JmenuItem undoItem,cutItem,copyItem,pasteItem,findItem,replaceItem,selectallItem,dateItem;
- //检查框菜单项,用于设置是否自动换行
- JCheckBoxMenuItem wrapItem;
- //字体设置菜单项
- JMenuItem fontItem;
- //帮助主题和关于菜单项
- JMenuItem helpItem,aboutItem;
- //右键菜单
- JPopupMenu popMenu;
读者可以先熟悉一下各个组件的名称,以便后面在阅读源代码时能够熟知这些组件的意义。
各个菜单项在被单击时都会产生事件,为处理这些事件还需要定义相应的监听器。需要说明:在本案例中所有菜单项使用同一个监听器,这样做是为了节约资源,并且能够使代码具有更强的可读性。以下是定义菜单项监听器的代码:
- //定义一个监听器的实现类用以监听各菜单项事件
-
- class ActionListenerImpl implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent e){
- Object obj;
- obj=e.getSource();
- if (obj==exitItem)
- doExit();
- else if(obj==saveItem)
- doSave();
- else if(obj==saveasItem)
- doSaveAs();
- else if(obj==newItem)
- doNewFile();
- else if(obj==printItem)
- doPrint();
- else if(obj==openItem)
- doOpen();
- else if(obj==cutItem)
- doCut();
- else if(obj==copyItem)
- doCopy();
- else if(obj==pasteItem)
- doPaste();
- else if(obj==selectallItem)
- doSelectAll();
- else if(obj==dateItem)
- doDateTime();
- else if(obj==wrapItem)
- doWrap();
- else if (obj==findItem)
- doFind();
- else if (obj==fontItem)
- doChangeFont();
- }
- }