记事本软件能够打开、编辑、保存各种类型的文本文档,也能在文本文档中查找特定的关键字,此外在还能设定文本文档的字体、字号以及风格等。
22.1.1记事本功能简介
记事本软件的运行结果如图22-1所示。
图22-1记事本软件界面
从图21-1可以看到:记事本程序运行开始后,在没有保存文档的情况下,标题栏自动显示“记事本--未命名”,这个标题表示了当前记事本的未命名状态。记事本有各种功能菜单,用户在记事本中可以编辑文本,此外为方便用户操作,记事本还提供了与Windows记事本完全相同的右键功能菜单。
此外,记事本还能弹出字体设置对话框和关键字查找对话框,它们分别如图22-2和图22-3所示。
图22-2设置字体对话框
图22-3查找关键字对话框
22.1.2项目结构简介
记事本项目总共由5个类组成,它们分别是:
- NoteBookFrame:记事本窗体类,它表示一个打开的记事本界面,是本项目最核心的类。
- FontDialog:设置字体对话框。
- FindDialog:查找关键字对话框。
- ExampleFileFilter:文件类型过滤器。
- SaveType:文件保存类型
- SaveDialog:保存文件对话框
- NoteBook:包含main()方法的类,它是程序启动的起点。
记事本软件的主体是一个文本区,这个文本区被放置在一个滚动面板中,下面的代码是对滚动面板和文本区的定义。
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();
}
}
本文字版教程还配有更详细的视频讲解,小伙伴们可以点击这里观看。