基于Java的模拟写字板的设计与实现

时间:2022-07-22
本文章向大家介绍基于Java的模拟写字板的设计与实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

此系统是使用Java语言实现简易写字板程序,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切,全选,撤销等多种基本功能。本系统结构如下:

(1)菜单栏: 文件模块:要用于操作整个存储或未保存的文档,包括新建,打开,保存,另存为等功能; 编辑模块:编辑模块是对文本内容的基本编辑,包括剪切,复制,粘贴,删除等功能; 格式模块:用于对用户输入内容显示上的操作,包括换行,字体的相关设置等功能; 帮助模块:帮助菜单是用来展示于写字板有关的一些信息; (2)文本区域: 文本区域主要用来承载用户输入的主要内容;

2 、主界面实现

图2.1 写字板程序主界面

本程序主要是由记事本界面的构造函数,初始化容器的结构,得到组件,并添加事件监听器。容器初始化创建主面板,包括写入内容和菜单栏。

2.3.2 主模块的代码实现

 1 MenuBar menusBar;//菜单栏
 2 
 3 MenuItem  open,keep,save,newfile,exit_out,about,text_font,colorchoose,back_choose,time_add,key_open,key_save,z_cancel,copy,pa_ste,cut,del,select_all,sear,auto_line;
 4 
 5        Menu fil,edi,forma,help;
 6 
 7 MenuShortcut open_cut,dsave_cut,save_cut,newwork_cut,quit_cut,about_cut,fontchoose_cut,colorchoose_cut,backchoose_cut,timeadd_cut,keyopen_cut,keysave_cut,zcancel_cut,copy_cut,paste_cut,cut_cut,delete_cut,selectall_cut,search_cut,autoline_cut;
 8 
 9        Toolkit tool=this.getToolkit();
10 
11        Clipboard clip;//剪贴版
12 
13        Image image=tool.getImage("data/icon.jpg");//框架图标
14 
15        JTextArea textarea;//文本区域
16 
17        JDialog dialog,fontdialog,keydialog,searchdialog;
18 
19        JScrollPane listscroll,textscroll;
20 
21        GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
22 
23        String fontname[]=ge.getAvailableFontFamilyNames();//字体库
24 
25        JLabel tip,fonttype,fontsize,searchtip,changetip;//提示
26 
27        file_dialog file_dialog;//输入输出对话框
28 
29        text text;//存储对象
30 
31        String opensource="";
32 
33        String texttype="宋体";
34 
35        String direct="";//保存路径
36 
37        String canceltext="";
38 
39        int size=18;//字体大小
40 
41        int para=0;//字体粗斜
42 
43        Font font=new Font(texttype,Font.PLAIN,size);
44 
45        Color fontcolor=Color.black;//字体颜色
46 
47        Color backcolor=Color.white;//背景颜色
48 
49        Date nowtime;
50 
51        char savemode1='s';
52 
53        char savemode2='t';//加密保存方式
54 
55        public SlNotepad(String title){
56 
57               this.setIconImage(image);//图标
58 
59               setTitle(title);//标题
60 
61               this.setResizable (true);
62 
63               this.setBackground (Color.cyan);
64 
65               this.setBounds (new Rectangle(150,100,800,550));
66 
67               this.addWindowListener(new WindowAdapter(){
68 
69                      public void windowClosing(WindowEvent e){
70 
71                             System.out.println("程序关闭");
72 
73                             System.exit(0);
74 
75                             }
76 
77             public void windowOpened(WindowEvent e){
78 
79                 System.out.println("程序打开");
80 
81                 }
82 
83             });

主模块包括菜单栏和文本区域。 菜单栏与JMenu实现,文本字段与文本实现,菜单栏,菜单栏,包括文件,编辑,格式,帮助。

该程序的主要模块相对简单,易于操作,对计算机硬件配置要求低,体积小,启动快,占地面积小,方便初学者使用,满足人们日常文本的基本处理。

2.3.3 文件模块的代码实现

图2.2 文件模块代码

部分代码

 1  public void save(){
 2 
 3        try{
 4 
 5               File_dialog=new file_dialog(this,"保存",file_dialog.SAVE);
 6 
 7               File_dialog.setVisible(true);
 8 
 9 if(file_dialog.getDirectory()!=null && file_dialog.getFile()!=null){
10 
11 OutputStreamWriter out=new OutputStreamWriter(new 
12 
13 FileOutputStream(file_dialog.getDirectory()+file_dialog.getFile()));
14 
15           out.write(textarea.getText());
16 
17           out.close();
18 
19           opensource=textarea.getText();
20 
21           direct=file_dialog.getDirectory()+file_dialog.getFile();
22 
23          }
24 
25 }catch(Exception e){
26 
27        System.out.println("Write error:"+e);
28 
29        JOptionPane.showMessageDialog(this,"写入错误",
30 
31 "警告",JOptionPane.WARNING_MESSAGE);
32 
33     }
34 
35  }

文件模块是写板的菜单栏中的主模块,主要用于操作整个存储或未保存的文档。 包括新建,打开,保存,另存为,启动新菜单以创建新的空文档,打开以打开或在电子文档存储,保存是将编辑后的书写板保存到固定位置,保存为保存编辑的写板 但是内容框可以继续编辑,退出退出WordPad程序。在打开,保存或保存操作时,可以打开,保存或保存各种文档格式,并且可以无格式存储,易于与其他文档转换软件一起使用,文档属性。

2.3.4 编辑模块的代码实现

图2.3 编辑模块

 1   opencut=new MenuShortcut(KeyEvent.VK_O);
 2 
 3             open.setShortcut(opencut);
 4 
 5             dsavecut=new MenuShortcut(KeyEvent.VK_S);
 6 
 7             keep.setShortcut(dsavecut);
 8 
 9             savecut=new MenuShortcut(KeyEvent.VK_L);
10 
11             save.setShortcut(savecut);
12 
13             quitcut=new MenuShortcut(KeyEvent.VK_Q);
14 
15             exit_out.setShortcut(quitcut);
16 
17             fontchoosecut=new MenuShortcut(KeyEvent.VK_F);
18 
19             text_font.setShortcut(fontchoosecut);
20 
21             colorchoosecut=new MenuShortcut(KeyEvent.VK_Y);
22 
23             colorchoose.setShortcut(colorchoosecut);
24 
25             backchoosecut=new MenuShortcut(KeyEvent.VK_B);
26 
27             backchoose.setShortcut(backchoosecut);
28 
29             aboutcut=new MenuShortcut(KeyEvent.VK_H);
30 
31             about.setShortcut(aboutcut);
32 
33             timeaddcut=new MenuShortcut(KeyEvent.VK_F5);
34 
35             timeadd.setShortcut(timeaddcut);
36 
37             keyopencut=new MenuShortcut(KeyEvent.VK_P);
38 
39             keyopen.setShortcut(keyopencut);
40 
41             keysavecut=new MenuShortcut(KeyEvent.VK_K);
42 
43             keysave.setShortcut(keysavecut);
44 
45             copy_cut=new MenuShortcut(KeyEvent.VK_C);
46 
47             copy.setShortcut(copy_cut);
48 
49             paste_cut=new MenuShortcut(KeyEvent.VK_V);
50 
51             paste.setShortcut(paste_cut);
52 
53      cut_cut=new MenuShortcut(KeyEvent.VK_X);  

编辑模块是对文本内容的基本编辑,包括剪切,复制,粘贴,删除等。 剪切是所选择的文档并且记录副本被剪切,所选择的文档重复记录,粘贴被剪切或复制记录的文档插入到指定位置,选择文档的所有内容被选择用于编辑操作以方便,删除被选择 去除文本。

2.4.5 帮助的实现

1   public void about(){//关于
2 
3     JOptionPane.showMessageDialog(this,"t写字板nt写字板这个程序可以帮助人们获得他们需要的信息在大量的文件","关于",JOptionPane.PLAIN_MESSAGE);
4 
5        }

帮助菜单是用来展示于写字板有关的一些信息。

2.5 程序模块说明

图2.4 流程图

2.6 程序的相关说明

写字板的布局分为上下两个:分别是菜单栏和文本输入域。因此,我们首先定义一个JFrame类作为容器的底部来承载其他内容。

(1)输入区域text。

(2)模块区域菜单栏。

(3)如果想完成相对应的功能和需求,就得添加一些事件监听器。 不仅在菜单栏中,单击事件侦听器并侦听输入区域的内容,而且在容器中添加。写字板是在Windows XP系统环境下开发的,使用由JDK提供的Sun和JCreator软件。

3 程序的详细设计与分析

3.1 构建菜单栏及其下拉菜单

 1 JMenu files=new JMenu("文件(F)");
 2 
 3        JMenu edit=new JMenu("编辑(E)");
 4 
 5       JMenu formats=new JMenu("格式(O)");
 6 
 7        JMenu scan=new JMenu("查看(V)");
 8 
 9        JMenu help=new JMenu("帮助(H)");
10 
11        JMenuItem newFile=new JMenuItem("新建(N)");
12 
13        JMenuItem open=new JMenuItem("打开(O)...");
14 
15        JMenuItem save=new JMenuItem("保存(S)");
16 
17        JMenuItem saveAs=new JMenuItem("另存为(A)...");
18 
19        JMenuItem exit=new JMenuItem("退出(X)");
20 
21        JMenuItem undo=new JMenuItem("撤销(U)");
22 
23        JMenuItem cut=new JMenuItem("剪切(T)");
24 
25        JMenuItem paste=new JMenuItem("粘贴(P)");
26 
27        JMenuItem selectAll=new JMenuItem("全选(A)");
28 
29        JMenuItem timeDate=new JMenuItem("时间/日期(D)");
30 
31        JCheckBoxMenuItem lineWrap=new JCheckBoxMenuItem("自动换行(M)");
32 
33 JMenuItem about=new JMenuItem("关于写字板  (A)");

Notepad()方法初始化后构建菜单栏,菜单栏用到JMenu方法实现,菜单栏包括文件,编辑,格式,帮助,文件用file()方法实现,编辑用edit()方法实现,格式用format()方法实现,帮助用help()方法实现。文件模块包括一下几个部分如新建,打开,保存,另存为等。

3.2 文件事件监听

 1   public void valueChanged(ListSelectionEvent e){
 2 
 3               texttype=fontname[fontlist.getSelectedIndex()];
 4 
 5        }
 6 
 7        public void newwork(){
 8 
 9               if(!havesave){
10 
11                      Di_alog.setVisible(true);
12 
13               }else{
14 
15                      textarea.setText("");
16 
17                      direct="";
18 
19                      canceltext=textarea.getText()
20 
21                      }           
22 
23               opensource=textarea.getText();
24 
25        }

这个用于实现为文件操作事件监听器打开事件监听器侦听打开文件,当文

件选择正常打开打开文件时,当文件损坏或不存在时无法打开

 1 if(e.getSource()==newfile){
 2 
 3        this.judge();
 4 
 5        this.newwork();
 6 
 7 }
 8 
 9 if(e.getSource()==open){
10 
11        this.judge();
12 
13        this.open();
14 
15 }
16 
17 if(e.getSource()==keep){
18 
19        this.dsave();
20 
21 }
22 
23 if(e.getSource()==save){
24 
25        this.save();
26 
27 }
28 
29 if(e.getSource()==exit_out){
30 
31        this.judge();
32 
33        this.quit();
34 
35 }
36 
37 if(e.getSource()==keyopen){
38 
39        this.judge();
40 
41        this.keyopen();
42 
43 }
44 
45 if(e.getSource()==keysave){
46 
47        this.keysave();
48 
49 }
50 
51 if(e.getSource()==zcancel){
52 
53        this.zcancel();
54 
55 }
56 
57 if(e.getSource()==copy){
58 
59        this.copy();
60 
61 }
62 
63 if(e.getSource()==paste){
64 
65 this.paste();
66 
67 }

文件事件用于检测模块的文件操作,例如当修改文档未保存时,通过事件监视,发现文档被保留,这提示用户保存文档,以符合退出的安全特性。

3.3 编辑事件监听

if(e.getSource()==copy){

       this.copy();

}

if(e.getSource()==paste){

       this.paste();

}

if(e.getSource()==cut){

       this.cut();

}

if(e.getSource()==search){

       Sear_chdialog.setVisible (true);

}

if(e.getSource()==searchok){

       this.search();

}

if(e.getSource()==searchcancel){

       Sear_chdialog. setVisible (false);

}

if(e.getSource()==changeok){

       this.change();

}

if(e.getSource()==changeall){

       this.changeall();

}

if(e.getSource()==delete){

       This.delete ();

编辑的事件监听器用于监视文档的编辑操作,例如,当文档被复制或剪切时,所选择的文档被记录用于粘贴操作以修改文档。

3.4 异常处理

在程序代码的操作中很可能产生异常或异常事件,为了避免这种情况,您需要在程序中使用Java异常处理机制。 在这个程序中运用进行的异常处理机制是try_catch。

1 try {
2 
3        UIM_anager .setLookAndFeel( UIM_anager.getSystemLookAndFeelClassName()
4 
5     }catch(Exception e){
6 
7              System .out .println(" Read error : "+e);
8 
9   JOptionPane.showMessageDialog (this,”读入错误”,"警告",JOptionPane.WARNING_MESSAGE);}