此系统是使用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写字板\n\t写字板这个程序可以帮助人们获得他们需要的信息在大量的文件","关于",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);}