虛擬的java編輯器課程設(shè)計(jì)報(bào)告_第1頁(yè)
虛擬的java編輯器課程設(shè)計(jì)報(bào)告_第2頁(yè)
虛擬的java編輯器課程設(shè)計(jì)報(bào)告_第3頁(yè)
虛擬的java編輯器課程設(shè)計(jì)報(bào)告_第4頁(yè)
虛擬的java編輯器課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 虛擬的Java編輯器設(shè)計(jì)報(bào)告一、需求分析此次課程設(shè)計(jì)名稱(chēng)為JAVA編輯器。需要設(shè)計(jì)一個(gè)圖形界面的文本編輯器,能編輯Java語(yǔ)言源程序,界面和功能類(lèi)似Editplus。演示程序?yàn)橛?jì)算機(jī)和用戶(hù)的對(duì)話(huà)形式執(zhí)行,即在計(jì)算機(jī)的終端顯示圖形界面的文檔編輯器,然后用戶(hù)就可以實(shí)現(xiàn)編輯,保存等像記事本一樣的功能。(1)打開(kāi)以有文件,保存編輯文件,退出編輯器并提醒保存;(2)查找編輯區(qū)中的字符串,用已知字符串替換查找的字符串;(3)顯示文件的存取路徑;(4)剪切,復(fù)制,粘貼,刪除等;(5)改變文本區(qū)字體的顏色,字體大小和形狀的功能;(6)關(guān)鍵字顯示藍(lán)色、類(lèi)庫(kù)類(lèi)名顯示紅色。二. 設(shè)計(jì)1. 設(shè)計(jì)思想Java編輯器是

2、用來(lái)編寫(xiě)java程序的源代碼。Java程序編輯器是:圖形界面、線(xiàn)程、流與文件等技術(shù)的綜合應(yīng)用。圖形界面的實(shí)現(xiàn):就選擇了swing來(lái)完成實(shí)現(xiàn),在選擇組件上,文本編輯區(qū)就選用了JTextPane作為主要的部件。由于Java的特性,可能用任何一個(gè)編輯器來(lái)編輯,于是就將Windows中的記事本作為模仿對(duì)象,根據(jù)實(shí)現(xiàn)情況刪減了其中的一些功能,如自動(dòng)換行,設(shè)置字體,打印等功能。在設(shè)計(jì)類(lèi)的時(shí)候,考慮到簡(jiǎn)單明了,一個(gè)主類(lèi),一個(gè)默認(rèn)屬性myfr類(lèi),染色類(lèi)SyntaxHighlighter作為程序的整體框架,所有的對(duì)象和方法都是在默認(rèn)屬性類(lèi)和染色類(lèi)中創(chuàng)建和實(shí)現(xiàn)的,以及為各組件注冊(cè)事件監(jiān)聽(tīng)程序也是在默認(rèn)屬性類(lèi)染色類(lèi)

3、中實(shí)現(xiàn)的。本程序主類(lèi)完成對(duì)象的實(shí)例化及顯示。2. 功能設(shè)計(jì)本程序涉及到了對(duì)圖形用戶(hù)界面的設(shè)計(jì)與實(shí)現(xiàn)和菜單的設(shè)計(jì)與實(shí)現(xiàn)。用戶(hù)可以通過(guò)此編輯器對(duì)java文件進(jìn)行文字的復(fù)制、剪切、粘貼、刪除、查找、替換、時(shí)間的插入、設(shè)置字體顏色和關(guān)鍵字、類(lèi)庫(kù)名著色等。本程序主要有以下3個(gè)模塊組成:(1)主體模塊由窗口、功能菜單、文本框組成。為用戶(hù)選擇編輯的功能提供了簡(jiǎn)單、方便的界面。Java的窗口由JFrame類(lèi)生成,我們可以在創(chuàng)建的空白窗口上添加組件。菜單是圖形用戶(hù)界面的重要組成部分,是由菜單條(MenuBar)、菜單(Menu)、菜單項(xiàng)(MenuItem)和復(fù)選菜單項(xiàng)(Checkbox MenuItem)等對(duì)象

4、組成。(2)功能模塊有文件的新建、打開(kāi)、保存、另存為和退出,文字的復(fù)制、剪切、粘貼、刪除、查找、替換、以及時(shí)間的插入,為用戶(hù)提供了java編輯器的基礎(chǔ)功能。 (3)染色模塊關(guān)鍵字顯示藍(lán)色,類(lèi)庫(kù)名顯示紅色。實(shí)現(xiàn)高亮子的核心方法StyledDocument.setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace)3. 詳細(xì)設(shè)計(jì)本設(shè)計(jì)主要是模仿windows記事本界面,主要的難點(diǎn)是關(guān)鍵字染色算法和查找替換算法。其他的部分相對(duì)簡(jiǎn)單,主要就是一些容器組件的組合,布局的設(shè)置。主要的功能都在myfr類(lèi)中實(shí)現(xiàn)

5、的。Java中提供的多行文本編輯器有: JTextComponent, JTextArea, JTextPane, JEditorPane等, 都可以使用但是因?yàn)檎Z(yǔ)法著色中文本要使用多種風(fēng)格的樣式, 所以這些文本編輯器的document要使用StyledDocument. JTextArea使用的是PlainDocument, 此document不能進(jìn)行多種格式的著色.JTextPane, JEditorPane使用的是StyledDocument, 默認(rèn)就可以使用.為了實(shí)現(xiàn)語(yǔ)法著色, 可以繼承自DefaultStyledDocument, 設(shè)置其為這些文本編輯器的documet, 或者也可以

6、直接使用JTextPane, JEditorPane來(lái)做. 為了方便, 這里就直接使用JTextPane了(1)主類(lèi) class ok 實(shí)例化初始化窗口 (2)主窗口體類(lèi) class myfr 字體類(lèi) class MyFont (3)染色類(lèi)class SyntaxHighlighter (4)鼠標(biāo)右鍵彈出菜單類(lèi)class handlemouse (5)幫助主題類(lèi)class myhelp(6)關(guān)閉窗口XXX類(lèi)class xxx(7)關(guān)閉幫助主題窗口類(lèi)class xxxhelp三. 調(diào)試及測(cè)試 1. 調(diào)試過(guò)程中遇到的主要問(wèn)題及解決方法 開(kāi)始把染色類(lèi)寫(xiě)在myfr中,結(jié)果出現(xiàn)繼承錯(cuò)誤,只好把染色類(lèi)寫(xiě)在

7、myfr之外,通過(guò)引用實(shí)現(xiàn)類(lèi)與類(lèi)聯(lián)系。在開(kāi)始設(shè)置字體顏色是出現(xiàn)問(wèn)題,關(guān)鍵字可著色,不能設(shè)置字體顏色,最后發(fā)現(xiàn)時(shí)沒(méi)有監(jiān)聽(tīng)器的位置出現(xiàn)了問(wèn)題! 2. 對(duì)設(shè)計(jì)和編碼的回顧討論和分析 在本設(shè)計(jì)中沒(méi)有用數(shù)據(jù)庫(kù),在直接用哈希表定義,所以只能簡(jiǎn)單定義幾個(gè)常用的關(guān)鍵字、類(lèi)庫(kù)名,能說(shuō)明功能實(shí)現(xiàn)就可以,這也是可以該進(jìn)的地方。設(shè)計(jì)的功能有限,只能實(shí)現(xiàn)簡(jiǎn)單的文本編輯,沒(méi)有編譯,運(yùn)行等等功能,這也是能力有限。 3.測(cè)試數(shù)據(jù)集 (1)主體模塊定義一個(gè)myfr類(lèi)對(duì)象,完成主類(lèi)的實(shí)例化顯示。(2)功能模塊(A)文件(新建、打開(kāi)、保存、另存為、退出)功能圖如下:(B)編輯(復(fù)制、剪切、粘貼、刪除、查找、查找下一個(gè)、替換、替換下

8、一個(gè)、全選、日期/時(shí)間)功能圖如下:(C)格式(字體、字體顏色)功能圖如下:(D)格式風(fēng)格(狀態(tài)欄)功能圖如下:(E)幫助(幫助主題、關(guān)于)功能圖如下:(F)關(guān)鍵字顯示藍(lán)色、類(lèi)庫(kù)類(lèi)名顯示紅色功能圖如下:四、經(jīng)驗(yàn)和體會(huì)。通過(guò)此次成功的實(shí)現(xiàn)了Java文本編輯器的設(shè)計(jì)與編寫(xiě),我進(jìn)一步鞏固、加深了對(duì)專(zhuān)業(yè)課程JAVA語(yǔ)言教程的基礎(chǔ)理論知識(shí)的理解,使我熟練的掌握了JAVA語(yǔ)言的輸入輸出流、數(shù)據(jù)庫(kù)連接的使用,靈活運(yùn)用各種類(lèi)庫(kù)。此次利用所學(xué)知識(shí),開(kāi)發(fā)小型應(yīng)用系統(tǒng)我掌握了如何運(yùn)用JAVA語(yǔ)言編寫(xiě)調(diào)試應(yīng)用系統(tǒng)程序,并且訓(xùn)練了我獨(dú)立開(kāi)發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。同時(shí),對(duì)于給定的設(shè)計(jì)題目,如何對(duì)其進(jìn)行分析,理

9、清思路,并給出相應(yīng)的數(shù)學(xué)模型,也是一項(xiàng)很好的考驗(yàn)。通過(guò)對(duì)這個(gè)課題的學(xué)習(xí),我發(fā)現(xiàn)Java語(yǔ)言作為一種新興的編輯語(yǔ)言,優(yōu)勢(shì)很明顯,整個(gè)程序的結(jié)構(gòu)很清晰,讓人一目了然。而且,程序的編輯、修改、移植性也很強(qiáng),可以通過(guò)對(duì)功能模塊的添加,增加程序的實(shí)用性,例如查找、替換、打印等等,這些事今后可以進(jìn)一步研究發(fā)展的方向。通過(guò)對(duì)這個(gè)課題的訓(xùn)練,使我基本掌握了Java編程的基礎(chǔ)知識(shí),主體模塊與功能模塊的結(jié)合技巧、方法,提高了我的自學(xué)能力,也鍛煉了我分析問(wèn)題、解決問(wèn)題的能力!此次課程設(shè)計(jì)給我印象最深的就是,在程序中非常容易出小的毛病,而這些小毛病往往浪費(fèi)大量的時(shí)間而不得其解,讓人煩惱至極。比如,在主方法體中忘記定義

10、一些變量,導(dǎo)致程序運(yùn)行時(shí)程序也報(bào)出大量錯(cuò),有時(shí)在鼠標(biāo)隨便定位處不小心按下一個(gè)字符,結(jié)果運(yùn)行報(bào)錯(cuò)后出現(xiàn)意外錯(cuò)誤,有時(shí)忘記保存等等此后讓我懂得寫(xiě)程序一定要仔細(xì),要認(rèn)真寫(xiě)清每一行代碼。附錄:主要源程序import java.awt.*;import java.awt.event.*;import java.awt.Color;import java.io.*;import java.util.*;import java.util.HashSet;import java.util.Set;import java.awt.datatransfer.*;import java.awt.event.*;im

11、port java.text.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.text.Caret;import javax.swing.JFrame;import javax.swing.JTextPane;import javax.swing.SwingUtilities;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;import javax.swing.text.BadLocation

12、Exception;import javax.swing.text.Document;import javax.swing.text.Style;import javax.swing.text.StyleConstants;import javax.swing.text.StyledDocument;import javax.swing.undo.*;public class okpublic static void main(String args)myfr fr=new myfr (我的java編輯器);fr.setSize(600,400);/myfr主窗體類(lèi)/class myfr ex

13、tends JFrame implements ActionListener String str,strnext,path,fname; /部分變量的聲明JPanel mainpane; JFileChooser choose = new JFileChooser(); /文件對(duì)話(huà)框Dialog find,replace; /find為查找對(duì)話(huà)框,replace對(duì)話(huà)框JTextField findtxt,repltxt; /find為查找對(duì)話(huà)框的輸入文本區(qū),replace對(duì)話(huà)框的輸入文本區(qū)Font newfont;JButton findenter,replb,but; /find為查找對(duì)話(huà)

14、框,replace對(duì)話(huà)框的確定按鈕JLabel state=new JLabel(java編輯器-未命名文檔); /狀態(tài)欄JTextPane txt1; /主輸入文本區(qū)File newfiles;JPopupMenu popm; /彈出菜單聲明JMenu m1,m2,m3,m4,m5,m6; /各菜單項(xiàng)JMenuItem m61,m62,m26,m271,m34,m51,m52,m53,m54,p_copy,p_cut,p_paste,p_del,font;int startp,endp,nexttemp,newstartp,newendp; /查找替換時(shí)所用的臨時(shí)變量JToolBar too

15、lbar = new JToolBar(); /工具條 private Set keywords;private Set classwords;private Style keywordStyle;private Style classwordStyle;private Style normalStyle;myfr(String sss) /構(gòu)造函數(shù)開(kāi)始super(sss);JMenuBar mb=new JMenuBar();fname=null; /初始文件名為空 findenter=new JButton(確定);findenter.addActionListener(this); /聲

16、明對(duì)話(huà)框中上確定按鈕,并注冊(cè)事件replb=new JButton(確定);replb.addActionListener(this);mainpane=(JPanel)this.getContentPane(); mainpane.setLayout(new BorderLayout(); txt1=new JTextPane();txt1.getDocument().addDocumentListener(new SyntaxHighlighter(txt1);txt1.addMouseListener(new handlemouse(this);/注冊(cè)鼠標(biāo)右擊事件txt1.setFont

17、(new Font(宋體,Font.PLAIN,18);mainpane.add(txt1, BorderLayout.CENTER); mainpane.add(North,toolbar); mainpane.add(South,state);JScrollPane sll = new JScrollPane(); /創(chuàng)建滾動(dòng)條mainpane.add(Center, sll); ;sll.getViewport().add(txt1); /將滾動(dòng)條裝入文本區(qū)popm=new JPopupMenu(); /POPMeun 開(kāi)始p_copy=new JMenuItem(復(fù)制 );p_copy

18、.addActionListener(this);KeyStroke keycopyp=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK); p_copy.setAccelerator(keycopyp); p_cut=new JMenuItem(剪切 );p_cut.addActionListener(this);KeyStroke keycutp=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK); p_cut.setAccelerator(keycutp); p_paste=n

19、ew JMenuItem(粘貼 );p_paste.addActionListener(this);KeyStroke keypp=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK); p_paste.setAccelerator(keypp); p_del=new JMenuItem(刪除 );p_del.addActionListener(this);KeyStroke keydelp=KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0); p_del.setAccelerator(keydelp)

20、; popm.add(p_copy);popm.add(p_cut);popm.add(p_paste);popm.add(p_del);txt1.add(popm); /POPMenu 結(jié)束m1=new JMenu(文件(F);m1.setMnemonic(F); /定義快捷方式JMenuItem m10=new JMenuItem(新建 );m10.addActionListener(this); /注冊(cè)事件監(jiān)聽(tīng)器KeyStroke keynew=KeyStroke.getKeyStroke(KeyEvent.VK_N,Event.CTRL_MASK); /定義快捷鍵m10.setAcce

21、lerator(keynew); JMenuItem m11=new JMenuItem(打開(kāi) );m11.addActionListener(this);KeyStroke keyopen=KeyStroke.getKeyStroke(KeyEvent.VK_O,Event.CTRL_MASK); m11.setAccelerator(keyopen); JMenuItem m12=new JMenuItem(保存 );m12.addActionListener(this);KeyStroke keysave=KeyStroke.getKeyStroke(KeyEvent.VK_S,Even

22、t.CTRL_MASK); m12.setAccelerator(keysave); JMenuItem m13=new JMenuItem(另保存為 );m13.addActionListener(this);JMenuItem m14=new JMenuItem(退出 );m14.addActionListener(this);KeyStroke keyexit=KeyStroke.getKeyStroke(KeyEvent.VK_F4,Event.ALT_MASK); m14.setAccelerator(keyexit); /m2=new JMenu(編輯(E);m2.setMnemo

23、nic(E);JMenuItem m21=new JMenuItem(復(fù)制 );m21.addActionListener(this);KeyStroke keycopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK); m21.setAccelerator(keycopy); JMenuItem m22=new JMenuItem(剪切 );m22.addActionListener(this);KeyStroke keycut=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK

24、); m22.setAccelerator(keycut); JMenuItem m23=new JMenuItem(粘貼 );m23.addActionListener(this);KeyStroke keyp=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK); m23.setAccelerator(keyp); JMenuItem m24=new JMenuItem(刪除 );m24.addActionListener(this);KeyStroke keydel=KeyStroke.getKeyStroke(KeyEvent.VK

25、_DELETE,0); m24.setAccelerator(keydel); JMenuItem m25=new JMenuItem(查找 );m25.addActionListener(this);KeyStroke keyfind=KeyStroke.getKeyStroke(KeyEvent.VK_F,Event.CTRL_MASK); m25.setAccelerator(keyfind); m26=new JMenuItem(查找下一個(gè) );m26.addActionListener(this);KeyStroke keyfn=KeyStroke.getKeyStroke(KeyE

26、vent.VK_F3,0); m26.setAccelerator(keyfn); m26.setEnabled(false);JMenuItem m27=new JMenuItem(替換 );m27.addActionListener(this);KeyStroke keyrepl=KeyStroke.getKeyStroke(KeyEvent.VK_H,Event.CTRL_MASK); m27.setAccelerator(keyrepl); m271=new JMenuItem(替換下一個(gè));m271.setEnabled(false);m271.addActionListener(t

27、his);KeyStroke keyrepn=KeyStroke.getKeyStroke(KeyEvent.VK_F6,0); m271.setAccelerator(keyrepn); JMenuItem m28=new JMenuItem(全選 );m28.addActionListener(this);KeyStroke keyall=KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.CTRL_MASK); m28.setAccelerator(keyall); JMenuItem m29=new JMenuItem(日期/時(shí)間 );m29.addA

28、ctionListener(this);/m3=new JMenu(格式(O);m3.setMnemonic(O);font=new JMenuItem(字體F);font.addActionListener(this);JMenuItem m33=new JMenuItem(字體顏色 );m33.addActionListener(this);/m5=new JMenu(視圖風(fēng)格(V);m5.setMnemonic(V);m54=new JMenuItem(狀態(tài)欄 );m54.addActionListener(this);/m6=new JMenu(幫助(H);m6.setMnemonic

29、(H); m61=new JMenuItem(幫助主題 );m61.addActionListener(this);m62=new JMenuItem(關(guān)于 );m62.addActionListener(this);/添加各項(xiàng)m1.add(m10); m1.add(m11); m1.add(m12); m1.add(m13); m1.addSeparator(); m1.add(m14);m3.add(font);m2.add(m21); m2.add(m22); m2.add(m23); m2.add(m24); m2.addSeparator(); m2.add(m25);m2.add(

30、m26); m2.add(m27); m2.add(m271); m2.addSeparator(); m2.add(m28);m2.add(m29); m3.add(m33); m5.add(m54); m6.add(m61); m6.addSeparator(); m6.add(m62); mb.add(m1); mb.add(m2); mb.add(m3); mb.add(m5); mb.add(m6); this.setJMenuBar(mb); /設(shè)置菜單欄setVisible(true);pack();show();this.addWindowListener(new xxx(th

31、is);/構(gòu)造函數(shù)結(jié)束/事件處理/public void actionPerformed(ActionEvent p)if(p.getActionCommand()=新建 ) /響應(yīng)菜單及工具欄事件 fname=null; /置文件名為空,便于判斷文件是否保存過(guò)txt1.setText();state.setText( 我的java編輯器-未命名文檔);if(p.getActionCommand()=打開(kāi) )try if(this.choose.APPROVE_OPTION=this.choose.showOpenDialog(this) path=this.choose.getSelecte

32、dFile().getPath(); fname=this.choose.getSelectedFile().getName();File file=new File(path);int flength=(int)file.length(); FileReader fReader=new FileReader(file); char data=new charflength; fReader.read(data,0,flength); txt1.setText(new String(data); state.setText( 我的java編輯器-+path+ 共+flength+字節(jié));/狀態(tài)

33、欄統(tǒng)計(jì)文件字節(jié)數(shù)txt1.setCaretPosition(0);catch(IOException e)if(p.getActionCommand()=保存 )if(fname=null) /如果文件名為空,說(shuō)明文件未被創(chuàng)建,彈出另存為對(duì)話(huà)框 othersave(); try File savefile=new File(path);savefile.createNewFile(); FileWriter fw=new FileWriter(savefile); fw.write(txt1.getText(); fw.close(); catch(IOException e)if(p.get

34、ActionCommand()=另保存為 )othersave();if(p.getActionCommand()=退出 )exit();/編輯/if(p.getActionCommand()=復(fù)制 ) txt1.copy(); if(p.getActionCommand()=剪切 ) txt1.cut(); if(p.getActionCommand()=粘貼 ) txt1.paste(); if(p.getActionCommand()=刪除 ) txt1.replaceSelection();/if(p.getActionCommand()=查找 ) / 創(chuàng)建查找對(duì)話(huà)框;find=new

35、 Dialog(this,查找);JPanel p1=new JPanel();JPanel p2=new JPanel();findtxt=new JTextField(7);p1.add(new JLabel(輸入要查找字符:);p1.add(findtxt);p2.add(findenter);find.add(Center,p1);find.add(South,p2);find.setSize(200,200);find.show();if(p.getSource()=findenter) /點(diǎn)擊查找對(duì)話(huà)框的確定按鈕后的事件處理if(findtxt.getText().equals()

36、 find.dispose();else if(!findtxt.getText().equals() find.dispose();str=txt1.getText();startp=str.indexOf(findtxt.getText();endp=startp+findtxt.getText().length();txt1.select(startp,endp);m26.setEnabled(true);newendp=endp;/獲取這次查找的終點(diǎn)notfindmethod();/if(p.getActionCommand()=查找下一個(gè) )nexttemp=newendp; /獲取

37、上次查找的終點(diǎn)做為未查找字符串的起點(diǎn)String strall=txt1.getText();txt1.select(nexttemp,strall.length(); /選中所有未查找的字符串strnext=txt1.getSelectedText();newstartp=strnext.indexOf(findtxt.getText()+nexttemp;/在未查找的字符串里搜索對(duì)應(yīng)字符的在TXT1中的位置newendp=newstartp+findtxt.getText().length();txt1.select(newstartp,newendp); /找到相應(yīng)文本,并選擇notfi

38、ndmethod();/if(p.getActionCommand()=替換 )m271.setEnabled(true);replace=new Dialog(this,替換); / 創(chuàng)建替換對(duì)話(huà)框;JPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();findtxt=new JTextField(7);repltxt=new JTextField(7);p1.add(new JLabel(輸入原始字符:);p1.add(findtxt);p2.add(new JLabel(輸入替換字符:);p2.add(r

39、epltxt);p3.add(replb);replace.add(North,p1);replace.add(Center,p2);replace.add(South,p3);replace.setSize(200,150);replace.show();if(p.getSource()=replb) /點(diǎn)擊替換對(duì)話(huà)框的確定按鈕后的事件處理replace.dispose();str=txt1.getText();startp=str.indexOf(findtxt.getText();endp=startp+findtxt.getText().length();txt1.select(sta

40、rtp,endp);txt1.replaceSelection(repltxt.getText();/*txt1.replaceRange(repltxt.getText(),startp,endp);*/newendp=endp; /獲取這次替換的終點(diǎn)/if(p.getActionCommand()=替換下一個(gè))nexttemp=newendp; /獲取上次查找的終點(diǎn)做為未查找字符串的起點(diǎn)String strall=txt1.getText();txt1.select(nexttemp,strall.length(); /選中所有未查找的字符串strnext=txt1.getSelected

41、Text();newstartp=strnext.indexOf(findtxt.getText()+nexttemp;/在未查找的字符串里搜索對(duì)應(yīng)字符的在TXT1中的位置newendp=newstartp+findtxt.getText().length();txt1.select(newstartp,newendp); notfindmethod();txt1.replaceSelection(repltxt.getText();/*txt1.replaceRange(repltxt.getText(),newstartp,newendp);/替換字符*/if(p.getActionCom

42、mand()=全選 )txt1.selectAll(); if(p.getActionCommand()=日期/時(shí)間 ) /用DATE類(lèi)插入當(dāng)前日期/時(shí)間,編譯時(shí)會(huì)出現(xiàn)說(shuō)明txt1.setText(txt1.getText()+Calendar.getInstance().getTime().toString();/格式/if(p.getSource()=font)/字體 new MyFont(); if(p.getActionCommand()=字體顏色 ) /字體顏色JColorChooser jColor=new JColorChooser(); /調(diào)用顏色面板,設(shè)置前景就可更改字體顏色

43、Color fcolor=txt1.getForeground(); txt1.setForeground( jColor.showDialog(txt1,選擇字體顏色,fcolor);normalStyle = (StyledDocument) txt1.getDocument().addStyle(Keyword_Style, null);StyleConstants.setForeground(normalStyle, fcolor);/試圖風(fēng)格/if(p.getActionCommand()=狀態(tài)欄 ) /狀態(tài)欄的隱藏和顯視state.setVisible( !(state.isVis

44、ible() );/幫助/if(p.getActionCommand()=幫助主題 )myhelp help=new myhelp();help.setSize(200,240);if(p.getActionCommand()=關(guān)于 ) JLabel prompt=new JLabel(歡迎使用我的JAVA編輯器,JLabel.CENTER);JOptionPane.showMessageDialog(null,prompt,關(guān)于我的JAVA編輯器,JOptionPane.INFORMATION_MESSAGE);public void othersave() /另存為方法if(choose.

45、APPROVE_OPTION=choose.showSaveDialog(this) path=choose.getSelectedFile().getPath(); newfiles=new File(path);state.setText( 我的java編輯器-+path);fname=choose.getSelectedFile().getName();try newfiles=new File(path);newfiles.createNewFile();FileWriter fw=new FileWriter(newfiles); fw.write(txt1.getText(); f

46、w.close(); catch(IOException e)public void notfindmethod() /提示查找不到的方法notfindmethodif(!txt1.getSelectedText().equals(findtxt.getText() txt1.setCaretPosition(0); /光標(biāo)返回文件頭部JOptionPane.showMessageDialog(null,查找不到對(duì)應(yīng)的字符!,查找錯(cuò)誤,JOptionPane.ERROR_MESSAGE);m26.setEnabled(false); public void exit() int value;S

47、tring qq=返回, 退出;value=JOptionPane.showOptionDialog(null, 你確定退出嗎?請(qǐng)注意保存文件!, 退出程序?, JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,null, qq, qq0);if(value=JOptionPane.YES_OPTION)return;else if(value=JOptionPane.NO_OPTION) System.exit(0); public class MyFont implements ActionListener final JDi

48、alog fontDialog; final JTextField tfFont, tfSize, tfStyle; final int fontStyleConst = Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD + Font.ITALIC ; final JList listStyle, listFont, listSize; JLabel sample; JPanel pane1, pane2, pane3, pane4;/ 構(gòu)造函數(shù)MyFont public MyFont() fontDialog = new JDialog(myfr.t

49、his, 字體設(shè)置, true); Container con = fontDialog.getContentPane(); con.setLayout(new BoxLayout(con, BoxLayout.Y_AXIS); pane1 = new JPanel(); pane2 = new JPanel(); pane3 = new JPanel(); pane4 = new JPanel(); Font currentFont = txt1.getFont(); JLabel lblFont = new JLabel(字體(F):); JLabel lblStyle = new JLa

50、bel(字形(Y):); JLabel lblSize = new JLabel(大小(S):); lblStyle.setHorizontalAlignment(SwingConstants.CENTER); lblSize.setHorizontalAlignment(SwingConstants.CENTER); lblFont.setPreferredSize(new Dimension(91, 20); lblStyle.setPreferredSize(new Dimension(82, 20); lblSize.setPreferredSize(new Dimension(100

51、, 20); tfFont = new JTextField(10); tfFont.setText(currentFont.getFontName(); tfFont.selectAll(); tfFont.setPreferredSize(new Dimension(200, 20); tfStyle = new JTextField(8); if (currentFont.getStyle() = Font.PLAIN) tfStyle.setText(常規(guī)); else if (currentFont.getStyle() = Font.BOLD) tfStyle.setText(粗體); else if (currentFont.getStyle() = Font.ITALIC) tfStyle.setText(斜體); else if (currentFont.getStyle() = (Font.BOLD + Font.ITALIC) tfStyle.setText(粗斜體); tfFont.selectAll(); tfStyle.setPreferredSize(new Dimension(200, 20); tfSize = new JTextField(7); tfSize.setText(currentFont.getSize() + );

溫馨提示

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

評(píng)論

0/150

提交評(píng)論