java实验文本编辑器_第1页
java实验文本编辑器_第2页
java实验文本编辑器_第3页
java实验文本编辑器_第4页
java实验文本编辑器_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java实验文本编辑器java实验文本编辑器/1/3java实验文本编辑器考查报告课程名称:java实验姓名:学号:开发环境描述及其相关配置描述J2SDK1.6或以上版本,程序编辑环境EditPlus,UltraEdit,或其他Java集成开发环境程序的模块功能描述和涉及到的关键JavaAPI列表模块:记事本:一)、菜单1、文件:新建,打开,保存,另存为,退出2、编辑:剪切,复制,粘贴,替换,全部替换,插入文本,删除3、格式:自动换行,颜色,字体4、查找5、帮助二)、界面1、编辑区三、程序源代码(关键部分附带注释)importjava.awt.*;importjava.awt.event.*;importjava.awt.datatransfer.*;importjavax.swing.*;importjava.io.*;importjava.lang.*;publicclassNotepadextendsJFrame{privatefinalColorcolorvalues[]={Color.black,Color.blue,Color.red,Color.green};//定义颜色数组StringstyleNames[]={"Bold","Italic"};//定义风格数组StringfontNames[]={"宋体","华文行楷","隶书"};//字体数组String[]sizeString=newString[30];//字号数组int[]size=newint[30];//及字号数组对应的字号整数,用于设置文字大小privateJRadioButtonMenuItemcolorItems[],fonts[];privateJCheckBoxMenuItemstyleItems[];privateJTextAreadisplayText;//定义文本编辑区privateButtonGroupfontGroup,colorGroup;//字体组,跟字色组privateintstyle;//字体风格privateJScrollPanescroll;//为文本编辑区提供滚动条privateStringselectText="";//存放文本编辑区中选中的文本内容privateintrowNumber=0;privatefd=new(this);//setupGUIpublicNotepad(){super("记事本");//标题//创建菜单条JMenuBarbar=newJMenuBar();setJMenuBar(bar);//设置文件菜单及其菜单项JMenu=newJMenu("文件(F)");('F');//设置新建菜单项 JMenuItemnewItem=newJMenuItem("新建(N)"); newItem.setMnemonic('N'); (newItem); newItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {displayText.setText(""); }}); //设置打开菜单项 JMenuItemopenItem=newJMenuItem("打开(O)"); openItem.setMnemonic('O'); (openItem); openItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {fd.setTitle("打开");//设置标题 fd.show(); if(fd.getFile()!=null){ =new());//用从fd中取得的文件建立新文件,即打开的文件 displayText.setText(""); try{ f=new(file); BufferedReaderb=newBufferedReader(f);//按行读打开的文件,然后传入文本域 Strings; try{ while((s=b.readLine())!=null){ displayText.append(s+"\n");//将给定文本追加到文本域的当前文本(即把读的内容加入文本域) } f.close(); b.close(); }catch(IOExceptionex){} }catch(ex){} } else{return;}} }); ();//加分隔线 //设置保存菜单项 JMenuItemsaveItem=newJMenuItem("保存(S)"); saveItem.setMnemonic('S'); (saveItem); saveItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {fd.setFile("*.java"); fd.setMode(); fd.setTitle("保存"); fd.show(); if(fd.getFile()!=null){ =new()); try{ PrintWriterpw=newPrintWriter(file); pw.print(displayText.getText()); //这一部分用于把textArea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件 pw.flush();//刷新该流的缓冲,然后关闭该流 pw.close();}catch(ex){ex.printStackTrace();} } else{return;} }}); //设置另存为菜单项 JMenuItemsaveAsItem=newJMenuItem("另存为(Z)"); saveAsItem.setMnemonic('Z'); (saveAsItem); saveAsItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {fd.setFile("*.java"); fd.setMode(); fd.setTitle("另存为"); fd.show(); if(fd.getFile()!=null){ =new()); try{ PrintWriterpw=newPrintWriter(file); pw.print(displayText.getText()); //这一部分用于把textArea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件 pw.flush();//刷新该流的缓冲,然后关闭该流 pw.close();}catch(tionex){ex.printStackTrace();} } else{return;}}});();//加分隔线//设置退出菜单项JMenuItemexitItem=newJMenuItem("退出(X)");exitItem.setMnemonic('x');(exitItem);exitItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){System.exit(0);}});bar.add();//创建编辑菜单及其菜单项JMenueditMenu=newJMenu("编辑(E)");editMenu.setMnemonic('E');//剪切菜单选项JMenuItemcutItem=newJMenuItem("剪切(T)"); cutItem.setMnemonic('T'); editMenu.add(cutItem); cutItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent){ selectText=displayText.getSelectedText();//取得选定的文本 intstart=displayText.getSelectionStart();//选定的文本的开始位置 intend=displayText.getSelectionEnd();//选定的文本的结束位置 displayText.replaceRange("",start,end);/*用指定替换文本替换指定开始位置及结束位置之间的文本。 这里指定替换文本为空,即为剪切了文本*/ } });//复制菜单选项JMenuItemcopyItem=newJMenuItem("复制(C)");copyItem.setMnemonic('C');editMenu.add(copyItem);copyItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){selectText=displayText.getSelectedText();//获得选中的内容,并保存在selectText里}});//粘贴的实现JMenuItempasteItem=newJMenuItem("粘贴(P)");pasteItem.setMnemonic('P');editMenu.add(pasteItem);pasteItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){intposition=displayText.getCaretPosition();//获得鼠标当前位置displayText.insert(selectText,position);//插入到鼠标当前位置}});editMenu.addSeparator();//加分隔线//替换的实现 JMenuItems=newJMenuItem("替换(R))"); s('R'); editMenu.add(s); s( newActionListener(){ publicvoidactionPerformed(ActionEventevent){ JPanelsJPanel(); JLabellookupLabel=newJLabel("要替换的内容"); JTextFieldinputText=newJTextField(10); JLabelsJLabel("替换为:"); JTextFieldchangetoText=newJTextField(10); s(lookupLabel); s(inputText); s(s); s(changetoText); JOptionPane.showMessageDialog(null,s); Stringtext=displayText.getText();//获得整个文本内容 StringchangeText=text.replaceFirst(inputText.getText(),changetoText.getText());//获得替换后的内容displayText.setText(changeText); } });//全部替换的实现 JMenuItemas=newJMenuItem("全部替换(Q))"); as('Q'); editMenu.add(as); as( newActionListener(){ publicvoidactionPerformed(ActionEventevent){ JPanelsJPanel(); JLabellookupLabel=newJLabel("要替换的内容"); JTextFieldinputText=newJTextField(10); JLabelsJLabel("替换为:"); JTextFieldchangetoText=newJTextField(10); s(lookupLabel); s(inputText); s(s); s(changetoText); JOptionPane.showMessageDialog(null,s); Stringtext=displayText.getText();//获得整个文本内容 StringchangeText=text.replaceAll(inputText.getText(),changetoText.getText());//获得替换后的内容 displayText.setText(changeText); } } ); editMenu.addSeparator();//加分隔线//插入子菜单 JMenuIteminsertItem=newJMenuItem("插入文本(K)"); insertItem.setMnemonic('K'); editMenu.add(insertItem); insertItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent){ JPanelinsertPanel=newJPanel(); JLabelinsertLabel=newJLabel("要插入的内容"); JTextFieldinputText=newJTextField(10); insertPanel.add(insertLabel); insertPanel.add(inputText); JOptionPane.showMessageDialog(null,insertPanel); intfromIndex=displayText.getCaretPosition();//取得当前的光标位置 displayText.insert(inputText.getText(),fromIndex); } } ); //删除子菜单 JMenuItemRemoveItem=newJMenuItem("删除(G)"); RemoveItem.setMnemonic('G'); editMenu.add(RemoveItem); RemoveItem.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvente) {intstart=displayText.getSelectionStart(); intend=displayText.getSelectionEnd(); displayText.replaceRange(null,start,end); } });editMenu.addSeparator();bar.add(editMenu);//addeditMenu//创建格式菜单及其菜单项JMenuformatMenu=newJMenu("格式(R)");formatMenu.setMnemonic('R');//自动换行的功能切换JMenuItemchangeItem=newJMenuItem("自动换行(W)");changeItem.setMnemonic('W');formatMenu.add(changeItem);changeItem.addActionListener(newActionListener(){booleanvar=false;publicvoidactionPerformed(ActionEventevent){if(var)var=false;elsevar=true;displayText.setLineWrap(var);}});//颜色菜单项Stringcolors[]={"黑色","蓝色","红色","绿色"};JMenucolorMenu=newJMenu("颜色(C)");colorMenu.setMnemonic('C');colorItems=newJRadioButtonMenuItem[colors.length];colorGroup=newButtonGroup();ItemHandleritemHandler=newItemHandler();//创建颜色按钮监听器for(intcount=0;count<colors.length;count++){colorItems[count]=newJRadioButtonMenuItem(colors[count]);colorMenu.add(colorItems[count]);colorGroup.add(colorItems[count]);colorItems[count].addActionListener(itemHandler);}//默认颜色colorItems[0].setSelected(true);//将颜色菜单项菜单加入菜单formatMenu.add(colorMenu);formatMenu.addSeparator();//加分隔线//字体菜单项JMenufontMenu=newJMenu("字体(n)");fontMenu.setMnemonic('n');fonts=newJRadioButtonMenuItem[fontNames.length];fontGroup=newButtonGroup();//创建字体按钮监听器for(intcount=0;count<fonts.length;count++){fonts[count]=newJRadioButtonMenuItem(fontNames[count]);fontMenu.add(fonts[count]);fontGroup.add(fonts[count]);fonts[count].addActionListener(itemHandler);}//默认字体fonts[0].setSelected(true);fontMenu.addSeparator();//设置风格菜单styleItems=newJCheckBoxMenuItem[styleNames.length];for(intcount=0;count<styleNames.length;count++){styleItems[count]=newJCheckBoxMenuItem(styleNames[count]);fontMenu.add(styleItems[count]);StyleHandlerstyleHandler=newStyleHandler();styleItems[count].addItemListener(styleHandler);}formatMenu.add(fontMenu);bar.add(formatMenu);//创建查找菜单 JMenusearchMenu=newJMenu("查找(S)"); searchMenu.setMnemonic('H');bar.add(searchMenu);//添加//创建帮助菜单JMenuhelpMenu=newJMenu("帮助(H)");helpMenu.setMnemonic('H');//设置“关于(A)...”菜单项 JMenuItemaboutItem=newJMenuItem("关于(A)..."); aboutItem.setMnemonic('A'); helpMenu.add(aboutItem); aboutItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {JOptionPane.showMessageDialog(Notepad.this, "文本编辑器", "关于",JOptionPane.PLAIN_MESSAGE); rowNumber=displayText.getRows(); JOptionPane.showMessageDialog(null,""+rowNumber); } } );//添加帮助菜单项JMenuItemhelpItem=newJMenuItem("帮助主题(H)...");helpItem.setMnemonic('H');helpMenu.add(helpItem);helpItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){JTextAreahelpText=newJTextArea("格式里的自动换行说明:单击一次切换功能\n只能实现整个文本的风格,字体等的设置\n"+"复制,粘贴可以实现插入到鼠标当前位置\n标题栏显示行数");JScrollPanescroller=newJScrollPane(helpText);JOptionPane.showMessageDialog(null,scroller);}});bar.add(helpMenu);//添加//设置字体选项面板//初始化字体大小数组 for(inti=0;i<size.length;i++){ sizeString[i]=""+(i+12)*2; size[i]=(i+12)*2; } Containercontainer=getContentPane(); container.setLayout(newBorderLayout());//设置面板显示文本displayText=newJTextArea();displayText.setForeground(colorvalues[0]);displayText.setFont(newFont("Serif",Font.PLAIN,24));//设置默认字体scroll=newJScrollPane(displayText,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);container.add(scroll,BorderLayout.CENTER);displayText.addKeyListener(//通过对displayText注册键盘事件来获得当前文本的行数newKeyListener(){publicvoidkeyPressed(KeyEventevent){rowNumber=displayText.getLineCount();//获得文本区的函数setTitle("总共"+rowNumber+"行");//设置标题}publicvoidkeyReleased(KeyEventevent){//空}publicvoidkeyTyped(KeyEventevent){//空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论