• 第二十二章《记事本》第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()方法的类,它是程序启动的起点。

    记事本软件的主体是一个文本区,这个文本区被放置在一个滚动面板中,下面的代码是对滚动面板和文本区的定义。

    1. JScrollPane  JSPane;//放置文本区的滚动面板
    2. JTextArea   text;//记事本文本区

    从图22-1可以看到:记事本界面除了一个文本区之外,其余的都是各种菜单和菜单项,这些菜单和菜单项的定义如下:

    1. MenuBar mainMenuBar;//菜单栏
    2. Jmenu fileMenu,editMenu,formatMenu,helpMenu;//各菜单
    3. //File菜单的菜单项
    4. JmenuItem newItem,openItem,saveItem, saveasItem,pageItem,printItem,exitItem;
    5. // 编辑菜单的菜单项
    6. JmenuItem undoItem,cutItem,copyItem,pasteItem,findItem,replaceItem,selectallItem,dateItem;
    7. //检查框菜单项,用于设置是否自动换行
    8. JCheckBoxMenuItem wrapItem;
    9. //字体设置菜单项
    10. JMenuItem   fontItem;
    11. //帮助主题和关于菜单项
    12. JMenuItem   helpItem,aboutItem;
    13. //右键菜单
    14. JPopupMenu  popMenu;

    读者可以先熟悉一下各个组件的名称,以便后面在阅读源代码时能够熟知这些组件的意义。

    各个菜单项在被单击时都会产生事件,为处理这些事件还需要定义相应的监听器。需要说明:在本案例中所有菜单项使用同一个监听器,这样做是为了节约资源,并且能够使代码具有更强的可读性。以下是定义菜单项监听器的代码:

    1. //定义一个监听器的实现类用以监听各菜单项事件
    2. class ActionListenerImpl implements ActionListener {
    3.     @Override
    4.     public void actionPerformed(ActionEvent e){
    5.         Object obj;
    6.         obj=e.getSource();
    7.         if (obj==exitItem)
    8.            doExit();
    9.         else if(obj==saveItem)
    10.            doSave();
    11.         else if(obj==saveasItem)
    12.            doSaveAs();
    13.         else if(obj==newItem)
    14.            doNewFile();
    15.         else if(obj==printItem)
    16.             doPrint();
    17.         else if(obj==openItem)
    18.             doOpen();
    19.         else if(obj==cutItem)
    20.             doCut();
    21.         else if(obj==copyItem)
    22.             doCopy();
    23.         else if(obj==pasteItem)
    24.             doPaste();
    25.         else if(obj==selectallItem)
    26.             doSelectAll();
    27.         else if(obj==dateItem)
    28.             doDateTime();
    29.         else if(obj==wrapItem)
    30.             doWrap();
    31.         else if (obj==findItem)
    32.             doFind();
    33.         else if (obj==fontItem)
    34.            doChangeFont();
    35.     }
    36. }

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

  • 相关阅读:
    DQL查询数据库
    bff层解决了什么痛点
    [单片机框架][bsp层][N32G4FR][framework][key_scan] 按键扫描
    基本运算符
    2023最新软件测试面试题大全(包含答案)
    python资源库
    【计算机网络笔记】网络应用对传输服务的需求
    ELK架构Logstash的相关插件:grok、multiline、mutate、date的详细介绍
    springboot2整合nacos云服务,配置基本类型和json类型
    条例26~30(实现)
  • 原文地址:https://blog.csdn.net/shalimu/article/details/128149076