此系统是使用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," 写字板 写字板这个程序可以帮助人们获得他们需要的信息在大量的文件","关于",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);}
公众号扫入回复--“java写字板”即可--->获取源码