第二十二章《记事本》第1节:记事本项目简介

记事本软件能够打开、编辑、保存各种类型的文本文档,也能在文本文档中查找特定的关键字,此外在还能设定文本文档的字体、字号以及风格等。

22.1.1记事本功能简介

记事本软件的运行结果如图22-1所示。

图22-1记事本软件界面

从图21-1可以看到:记事本程序运行开始后,在没有保存文档的情况下,标题栏自动显示“记事本--未命名”,这个标题表示了当前记事本的未命名状态。记事本有各种功能菜单,用户在记事本中可以编辑文本,此外为方便用户操作,记事本还提供了与Windows记事本完全相同的右键功能菜单。

此外,记事本还能弹出字体设置对话框和关键字查找对话框,它们分别如图22-2和图22-3所示。

图22-2设置字体对话框

图22-3查找关键字对话框

22.1.2项目结构简介

记事本项目总共由7个类组成,它们分别是:

  • 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();
    }
}

除阅读文章外,各位小伙伴还可以点击这里观看我在本站的视频课程学习Java!   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆哥讲Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值