java實驗文本編輯器_第1頁
java實驗文本編輯器_第2頁
java實驗文本編輯器_第3頁
java實驗文本編輯器_第4頁
java實驗文本編輯器_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

java實驗文本編輯器java實驗文本編輯器/1/3java實驗文本編輯器考查報告課程名稱:java實驗姓名:學號:開發(fā)環(huán)境描述及其相關(guān)配置描述J2SDK1.6或以上版本,程序編輯環(huán)境EditPlus,UltraEdit,或其他Java集成開發(fā)環(huán)境程序的模塊功能描述和涉及到的關(guān)鍵JavaAPI列表模塊:記事本:一)、菜單1、文件:新建,打開,保存,另存為,退出2、編輯:剪切,復制,粘貼,替換,全部替換,插入文本,刪除3、格式:自動換行,顏色,字體4、查找5、幫助二)、界面1、編輯區(qū)三、程序源代碼(關(guān)鍵部分附帶注釋)importjava.awt.*;importjava.awt.event.*;importjava.awt.datatransfer.*;importjavax.swing.*;importjava.io.*;importjava.lang.*;publicclassNotepadextendsJFrame{privatefinalColorcolorvalues[]={Color.black,Color.blue,Color.red,Color.green};//定義顏色數(shù)組StringstyleNames[]={"Bold","Italic"};//定義風格數(shù)組StringfontNames[]={"宋體","華文行楷","隸書"};//字體數(shù)組String[]sizeString=newString[30];//字號數(shù)組int[]size=newint[30];//及字號數(shù)組對應(yīng)的字號整數(shù),用于設(shè)置文字大小privateJRadioButtonMenuItemcolorItems[],fonts[];privateJCheckBoxMenuItemstyleItems[];privateJTextAreadisplayText;//定義文本編輯區(qū)privateButtonGroupfontGroup,colorGroup;//字體組,跟字色組privateintstyle;//字體風格privateJScrollPanescroll;//為文本編輯區(qū)提供滾動條privateStringselectText="";//存放文本編輯區(qū)中選中的文本內(nèi)容privateintrowNumber=0;privatefd=new(this);//setupGUIpublicNotepad(){super("記事本");//標題//創(chuàng)建菜單條JMenuBarbar=newJMenuBar();setJMenuBar(bar);//設(shè)置文件菜單及其菜單項JMenu=newJMenu("文件(F)");('F');//設(shè)置新建菜單項 JMenuItemnewItem=newJMenuItem("新建(N)"); newItem.setMnemonic('N'); (newItem); newItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {displayText.setText(""); }}); //設(shè)置打開菜單項 JMenuItemopenItem=newJMenuItem("打開(O)"); openItem.setMnemonic('O'); (openItem); openItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {fd.setTitle("打開");//設(shè)置標題 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");//將給定文本追加到文本域的當前文本(即把讀的內(nèi)容加入文本域) } f.close(); b.close(); }catch(IOExceptionex){} }catch(ex){} } else{return;}} }); ();//加分隔線 //設(shè)置保存菜單項 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中的內(nèi)容打印到pw指定的文件file中去,file圍在對話框中選定的文件 pw.flush();//刷新該流的緩沖,然后關(guān)閉該流 pw.close();}catch(ex){ex.printStackTrace();} } else{return;} }}); //設(shè)置另存為菜單項 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中的內(nèi)容打印到pw指定的文件file中去,file圍在對話框中選定的文件 pw.flush();//刷新該流的緩沖,然后關(guān)閉該流 pw.close();}catch(tionex){ex.printStackTrace();} } else{return;}}});();//加分隔線//設(shè)置退出菜單項JMenuItemexitItem=newJMenuItem("退出(X)");exitItem.setMnemonic('x');(exitItem);exitItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){System.exit(0);}});bar.add();//創(chuàng)建編輯菜單及其菜單項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();//選定的文本的結(jié)束位置 displayText.replaceRange("",start,end);/*用指定替換文本替換指定開始位置及結(jié)束位置之間的文本。 這里指定替換文本為空,即為剪切了文本*/ } });//復制菜單選項JMenuItemcopyItem=newJMenuItem("復制(C)");copyItem.setMnemonic('C');editMenu.add(copyItem);copyItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){selectText=displayText.getSelectedText();//獲得選中的內(nèi)容,并保存在selectText里}});//粘貼的實現(xiàn)JMenuItempasteItem=newJMenuItem("粘貼(P)");pasteItem.setMnemonic('P');editMenu.add(pasteItem);pasteItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){intposition=displayText.getCaretPosition();//獲得鼠標當前位置displayText.insert(selectText,position);//插入到鼠標當前位置}});editMenu.addSeparator();//加分隔線//替換的實現(xiàn) JMenuItems=newJMenuItem("替換(R))"); s('R'); editMenu.add(s); s( newActionListener(){ publicvoidactionPerformed(ActionEventevent){ JPanelsJPanel(); JLabellookupLabel=newJLabel("要替換的內(nèi)容"); JTextFieldinputText=newJTextField(10); JLabelsJLabel("替換為:"); JTextFieldchangetoText=newJTextField(10); s(lookupLabel); s(inputText); s(s); s(changetoText); JOptionPane.showMessageDialog(null,s); Stringtext=displayText.getText();//獲得整個文本內(nèi)容 StringchangeText=text.replaceFirst(inputText.getText(),changetoText.getText());//獲得替換后的內(nèi)容displayText.setText(changeText); } });//全部替換的實現(xiàn) JMenuItemas=newJMenuItem("全部替換(Q))"); as('Q'); editMenu.add(as); as( newActionListener(){ publicvoidactionPerformed(ActionEventevent){ JPanelsJPanel(); JLabellookupLabel=newJLabel("要替換的內(nèi)容"); JTextFieldinputText=newJTextField(10); JLabelsJLabel("替換為:"); JTextFieldchangetoText=newJTextField(10); s(lookupLabel); s(inputText); s(s); s(changetoText); JOptionPane.showMessageDialog(null,s); Stringtext=displayText.getText();//獲得整個文本內(nèi)容 StringchangeText=text.replaceAll(inputText.getText(),changetoText.getText());//獲得替換后的內(nèi)容 displayText.setText(changeText); } } ); editMenu.addSeparator();//加分隔線//插入子菜單 JMenuIteminsertItem=newJMenuItem("插入文本(K)"); insertItem.setMnemonic('K'); editMenu.add(insertItem); insertItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent){ JPanelinsertPanel=newJPanel(); JLabelinsertLabel=newJLabel("要插入的內(nèi)容"); 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//創(chuàng)建格式菜單及其菜單項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();//創(chuàng)建顏色按鈕監(jiān)聽器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();//創(chuàng)建字體按鈕監(jiān)聽器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();//設(shè)置風格菜單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);//創(chuàng)建查找菜單 JMenusearchMenu=newJMenu("查找(S)"); searchMenu.setMnemonic('H');bar.add(searchMenu);//添加//創(chuàng)建幫助菜單JMenuhelpMenu=newJMenu("幫助(H)");helpMenu.setMnemonic('H');//設(shè)置“關(guān)于(A)...”菜單項 JMenuItemaboutItem=newJMenuItem("關(guān)于(A)..."); aboutItem.setMnemonic('A'); helpMenu.add(aboutItem); aboutItem.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventevent) {JOptionPane.showMessageDialog(Notepad.this, "文本編輯器", "關(guān)于",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只能實現(xiàn)整個文本的風格,字體等的設(shè)置\n"+"復制,粘貼可以實現(xiàn)插入到鼠標當前位置\n標題欄顯示行數(shù)");JScrollPanescroller=newJScrollPane(helpText);JOptionPane.showMessageDialog(null,scroller);}});bar.add(helpMenu);//添加//設(shè)置字體選項面板//初始化字體大小數(shù)組 for(inti=0;i<size.length;i++){ sizeString[i]=""+(i+12)*2; size[i]=(i+12)*2; } Containercontainer=getContentPane(); container.setLayout(newBorderLayout());//設(shè)置面板顯示文本displayText=newJTextArea();displayText.setForeground(colorvalues[0]);displayText.setFont(newFont("Serif",Font.PLAIN,24));//設(shè)置默認字體scroll=newJScrollPane(displayText,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);container.add(scroll,BorderLayout.CENTER);displayText.addKeyListener(//通過對displayText注冊鍵盤事件來獲得當前文本的行數(shù)newKeyListener(){publicvoidkeyPressed(KeyEventevent){rowNumber=displayText.getLineCount();//獲得文本區(qū)的函數(shù)setTitle("總共"+rowNumber+"行");//設(shè)置標題}publicvoidkeyReleased(KeyEventevent){//空}publicvoidkeyTyped(KeyEventevent){//空

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論