版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 虛擬的Java編輯器設(shè)計報告</p><p><b> 一、需求分析</b></p><p> 此次課程設(shè)計名稱為JAVA編輯器。需要設(shè)計一個圖形界面的文本編輯器,能編輯Java語言源程序,界面和功能類似Editplus。</p><p> 演示程序為計算機(jī)和用戶的對話形式執(zhí)行,即在計算機(jī)的終端顯示圖形界面的文檔編輯
2、器,然后用戶就可以實現(xiàn)編輯,保存等像記事本一樣的功能。</p><p> ?。?)打開以有文件,保存編輯文件,退出編輯器并提醒保存;</p><p> (2)查找編輯區(qū)中的字符串,用已知字符串替換查找的字符串;</p><p> ?。?)顯示文件的存取路徑;</p><p> (4)剪切,復(fù)制,粘貼,刪除等;</p><
3、;p> ?。?)改變文本區(qū)字體的顏色,字體大小和形狀的功能;</p><p> ?。?)關(guān)鍵字顯示藍(lán)色、類庫類名顯示紅色。</p><p><b> 二. 設(shè)計</b></p><p><b> 設(shè)計思想</b></p><p> Java編輯器是用來編寫java程序的源代碼。Java程
4、序編輯器是:圖形界面、線程、流與文件等技術(shù)的綜合應(yīng)用。</p><p> 圖形界面的實現(xiàn):就選擇了swing來完成實現(xiàn),在選擇組件上,文本編輯區(qū)就選用了JTextPane作為主要的部件。</p><p> 由于Java的特性,可能用任何一個編輯器來編輯,于是就將Windows中的記事本作為模仿對象,根據(jù)實現(xiàn)情況刪減了其中的一些功能,如自動換行,設(shè)置字體,打印等功能。在設(shè)計類的時候,考慮
5、到簡單明了,一個主類,一個默認(rèn)屬性myfr類,染色類SyntaxHighlighter作為程序的整體框架,所有的對象和方法都是在默認(rèn)屬性類和染色類中創(chuàng)建和實現(xiàn)的,以及為各組件注冊事件監(jiān)聽程序也是在默認(rèn)屬性類染色類中實現(xiàn)的。本程序主類完成對象的實例化及顯示。</p><p><b> 功能設(shè)計</b></p><p> 本程序涉及到了對圖形用戶界面的設(shè)計與實現(xiàn)和菜單
6、的設(shè)計與實現(xiàn)。用戶可以通過此編輯器對java文件進(jìn)行文字的復(fù)制、剪切、粘貼、刪除、查找、替換、時間的插入、設(shè)置字體顏色和關(guān)鍵字、類庫名著色等。</p><p> 本程序主要有以下3個模塊組成:</p><p><b> ?。?)主體模塊</b></p><p> 由窗口、功能菜單、文本框組成。為用戶選擇編輯的功能提供了簡單、方便的界面。Ja
7、va的窗口由JFrame類生成,我們可以在創(chuàng)建的空白窗口上添加組件。菜單是圖形用戶界面的重要組成部分,是由菜單條(MenuBar)、菜單(Menu)、菜單項(MenuItem)和復(fù)選菜單項(Checkbox MenuItem)等對象組成。</p><p><b> (2)功能模塊</b></p><p> 有文件的新建、打開、保存、另存為和退出,文字的復(fù)制、剪切、
8、粘貼、刪除、查找、替換、以及時間的插入,為用戶提供了java編輯器的基礎(chǔ)功能。 </p><p><b> ?。?)染色模塊</b></p><p> 關(guān)鍵字顯示藍(lán)色,類庫名顯示紅色。實現(xiàn)高亮子的核心方法</p><p> StyledDocument.setCharacterAttributes(int offset, int lengt
9、h, AttributeSet s, boolean replace)</p><p><b> 詳細(xì)設(shè)計</b></p><p> 本設(shè)計主要是模仿windows記事本界面,主要的難點(diǎn)是關(guān)鍵字染色算法和查找替換算法。其他的部分相對簡單,主要就是一些容器組件的組合,布局的設(shè)置。主要的功能都在myfr類中實現(xiàn)的。</p><p> Java
10、中提供的多行文本編輯器有: JTextComponent, JTextArea, JTextPane, JEditorPane等, 都可以使用但是因為語法著色中文本要使用多種風(fēng)格的樣式, 所以這些文本編輯器的document要使用StyledDocument. JTextArea使用的是PlainDocument, 此document不能進(jìn)行多種格式的著色.JTextPane, JEditorPane使用的是StyledDocument
11、, 默認(rèn)就可以使用.</p><p> 為了實現(xiàn)語法著色, 可以繼承自DefaultStyledDocument, 設(shè)置其為這些文本編輯器的documet, 或者也可以直接使用JTextPane, JEditorPane來做. 為了方便, 這里就直接使用JTextPane了</p><p> (1)主類 class ok</p><p><b>
12、實例化初始化窗口</b></p><p> ?。?)主窗口體類 class myfr 字體類 class MyFont</p><p> ?。?)染色類class SyntaxHighlighter</p><p> ?。?)鼠標(biāo)右鍵彈出菜單類class handlemouse</p><p> ?。?)幫助主題類class m
13、yhelp</p><p> (6)關(guān)閉窗口XXX類class xxx</p><p> (7)關(guān)閉幫助主題窗口類class xxxhelp</p><p><b> 三. 調(diào)試及測試</b></p><p> 1. 調(diào)試過程中遇到的主要問題及解決方法</p><p> 開始把染色類寫在
14、myfr中,結(jié)果出現(xiàn)繼承錯誤,只好把染色類寫在myfr之外,通過引用實現(xiàn)類與類聯(lián)系。在開始設(shè)置字體顏色是出現(xiàn)問題,關(guān)鍵字可著色,不能設(shè)置字體顏色,最后發(fā)現(xiàn)時沒有監(jiān)聽器的位置出現(xiàn)了問題!</p><p> 2. 對設(shè)計和編碼的回顧討論和分析</p><p> 在本設(shè)計中沒有用數(shù)據(jù)庫,在直接用哈希表定義,所以只能簡單定義幾個常用的關(guān)鍵字、類庫名,能說明功能實現(xiàn)就可以,這也是可以該進(jìn)的地方。
15、設(shè)計的功能有限,只能實現(xiàn)簡單的文本編輯,沒有編譯,運(yùn)行等等功能,這也是能力有限。</p><p><b> 3.測試數(shù)據(jù)集</b></p><p><b> ?。?)主體模塊</b></p><p> 定義一個myfr類對象,完成主類的實例化顯示。</p><p><b> ?。?)功
16、能模塊</b></p><p> ?。ˋ)文件(新建、打開、保存、另存為、退出)</p><p><b> 功能圖如下:</b></p><p> ?。˙)編輯(復(fù)制、剪切、粘貼、刪除、查找、查找下一個、替換、替換下一個、全選、日期/時間)</p><p><b> 功能圖如下:</b&g
17、t;</p><p> (C)格式(字體、字體顏色)</p><p><b> 功能圖如下:</b></p><p> ?。―)格式風(fēng)格(狀態(tài)欄)</p><p><b> 功能圖如下:</b></p><p> ?。‥)幫助(幫助主題、關(guān)于)</p>&
18、lt;p><b> 功能圖如下:</b></p><p> ?。‵)關(guān)鍵字顯示藍(lán)色、類庫類名顯示紅色</p><p><b> 功能圖如下:</b></p><p><b> 四、經(jīng)驗和體會。</b></p><p> 通過此次成功的實現(xiàn)了Java文本編輯器的設(shè)計
19、與編寫,我進(jìn)一步鞏固、加深了對專業(yè)課程《JAVA語言教程》的基礎(chǔ)理論知識的理解,使我熟練的掌握了JAVA語言的輸入輸出流、數(shù)據(jù)庫連接的使用,靈活運(yùn)用各種類庫。此次利用所學(xué)知識,開發(fā)小型應(yīng)用系統(tǒng)我掌握了如何運(yùn)用JAVA語言編寫調(diào)試應(yīng)用系統(tǒng)程序,并且訓(xùn)練了我獨(dú)立開發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。同時,對于給定的設(shè)計題目,如何對其進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型,也是一項很好的考驗。</p><p> 通
20、過對這個課題的學(xué)習(xí),我發(fā)現(xiàn)Java語言作為一種新興的編輯語言,優(yōu)勢很明顯,整個程序的結(jié)構(gòu)很清晰,讓人一目了然。而且,程序的編輯、修改、移植性也很強(qiáng),可以通過對功能模塊的添加,增加程序的實用性,例如查找、替換、打印等等,這些事今后可以進(jìn)一步研究發(fā)展的方向。</p><p> 通過對這個課題的訓(xùn)練,使我基本掌握了Java編程的基礎(chǔ)知識,主體模塊與功能模塊的結(jié)合技巧、方法,提高了我的自學(xué)能力,也鍛煉了我分析問題、解決
21、問題的能力!</p><p> 此次課程設(shè)計給我印象最深的就是,在程序中非常容易出小的毛病,而這些小毛病往往浪費(fèi)大量的時間而不得其解,讓人煩惱至極。比如,在主方法體中忘記定義一些變量,導(dǎo)致程序運(yùn)行時程序也報出大量錯,有時在鼠標(biāo)隨便定位處不小心按下一個字符,結(jié)果運(yùn)行報錯后出現(xiàn)意外錯誤,有時忘記保存等等……此后讓我懂得寫程序一定要仔細(xì),要認(rèn)真寫清每一行代碼。</p><p><b>
22、; 附錄:主要源程序</b></p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import java.awt.Color;</p><p> import java.io.*;</p><p> imp
23、ort java.util.*;</p><p> import java.util.HashSet;</p><p> import java.util.Set;</p><p> import java.awt.datatransfer.*;</p><p> import java.awt.event.*;</p>
24、<p> import java.text.*;</p><p> import javax.swing.*;</p><p> import javax.swing.event.*;</p><p> import javax.swing.text.Caret;</p><p> import javax.swing.
25、JFrame;</p><p> import javax.swing.JTextPane;</p><p> import javax.swing.SwingUtilities;</p><p> import javax.swing.event.DocumentEvent;</p><p> import javax.swing.
26、event.DocumentListener;</p><p> import javax.swing.text.BadLocationException;</p><p> import javax.swing.text.Document;</p><p> import javax.swing.text.Style;</p><p>
27、; import javax.swing.text.StyleConstants;</p><p> import javax.swing.text.StyledDocument;</p><p> import javax.swing.undo.*;</p><p> public class ok{</p><p> publi
28、c static void main(String[] args)</p><p><b> {</b></p><p> myfr fr=new myfr ("我的java編輯器");</p><p> fr.setSize(600,400);</p><p><b> }<
29、/b></p><p><b> }</b></p><p> ///////////////////////////myfr主窗體類//////////////////////////////////////</p><p> class myfr extends JFrame implements ActionListener&
30、lt;/p><p><b> { </b></p><p> String str,strnext,path,fname; //部分變量的聲明</p><p> JPanel mainpane; </p><p> JFileChooser choose = new JFileChooser(); //文件對話框&l
31、t;/p><p> Dialog find,replace; //find為查找對話框,replace對話框</p><p> JTextField findtxt,repltxt; //find為查找對話框的輸入文本區(qū),replace對話框的輸入文本區(qū)</p><p> Font newfont;</p><p> JButton fi
32、ndenter,replb,but; //find為查找對話框,replace對話框的確定按鈕</p><p> JLabel state=new JLabel("java編輯器------未命名文檔"); //狀態(tài)欄</p><p> JTextPane txt1; //主輸入文本區(qū)</p><p> File newfiles;<
33、/p><p> JPopupMenu popm; //彈出菜單聲明</p><p> JMenu m1,m2,m3,m4,m5,m6; //各菜單項</p><p> JMenuItem m61,m62,m26,m271,m34,m51,m52,m53,m54,p_copy,p_cut,p_paste,p_del,font;</p><p>
34、; int startp,endp,nexttemp,newstartp,newendp; //查找替換時所用的臨時變量</p><p> JToolBar toolbar = new JToolBar(); //工具條 </p><p> private Set<String> keywords;</p><p> private Set<
35、;String> classwords;</p><p> private Style keywordStyle;</p><p> private Style classwordStyle;</p><p> private Style normalStyle;</p><p> myfr(String sss) /////構(gòu)
36、造函數(shù)開始</p><p><b> {</b></p><p> super(sss);</p><p> JMenuBar mb=new JMenuBar();</p><p> fname=null; //初始文件名為空 </p><p> findenter=new JButto
37、n("確定");</p><p> findenter.addActionListener(this); //聲明對話框中上確定按鈕,并注冊事件</p><p> replb=new JButton("確定");</p><p> replb.addActionListener(this);</p><
38、;p> mainpane=(JPanel)this.getContentPane(); </p><p> mainpane.setLayout(new BorderLayout()); </p><p> txt1=new JTextPane();</p><p> txt1.getDocument().addDocumentListener(new
39、 SyntaxHighlighter(txt1));</p><p> txt1.addMouseListener(new handlemouse(this));//注冊鼠標(biāo)右擊事件</p><p> txt1.setFont(new Font("宋體",Font.PLAIN,18));</p><p> mainpane.add(txt1
40、, BorderLayout.CENTER); </p><p> mainpane.add("North",toolbar); </p><p> mainpane.add("South",state);</p><p> JScrollPane sll = new JScrollPane(); //創(chuàng)建滾動條<
41、/p><p> mainpane.add("Center", sll); ;</p><p> sll.getViewport().add(txt1); //將滾動條裝入文本區(qū)</p><p> popm=new JPopupMenu(); ////POPMeun 開始</p><p> p_copy=new JMen
42、uItem("復(fù)制 ");</p><p> p_copy.addActionListener(this);</p><p> KeyStroke keycopyp=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK); </p><p> p_copy.setAccelerator(k
43、eycopyp); </p><p> p_cut=new JMenuItem("剪切 ");</p><p> p_cut.addActionListener(this);</p><p> KeyStroke keycutp=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK); &
44、lt;/p><p> p_cut.setAccelerator(keycutp); </p><p> p_paste=new JMenuItem("粘貼 ");</p><p> p_paste.addActionListener(this);</p><p> KeyStroke keypp=KeyStroke.g
45、etKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK); </p><p> p_paste.setAccelerator(keypp); </p><p> p_del=new JMenuItem("刪除 ");</p><p> p_del.addActionListener(this);</p>
46、;<p> KeyStroke keydelp=KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0); </p><p> p_del.setAccelerator(keydelp); </p><p> popm.add(p_copy);</p><p> popm.add(p_cut);</p>
47、;<p> popm.add(p_paste);</p><p> popm.add(p_del);</p><p> txt1.add(popm); ////POPMenu 結(jié)束</p><p> m1=new JMenu("文件(F)");</p><p> m1.setMnemonic(
48、9;F'); //定義快捷方式</p><p> JMenuItem m10=new JMenuItem("新建 ");</p><p> m10.addActionListener(this); //注冊事件監(jiān)聽器</p><p> KeyStroke keynew=KeyStroke.getKeyStroke(KeyEvent.
49、VK_N,Event.CTRL_MASK); //定義快捷鍵</p><p> m10.setAccelerator(keynew); </p><p> JMenuItem m11=new JMenuItem("打開 ");</p><p> m11.addActionListener(this);</p><p>
50、; KeyStroke keyopen=KeyStroke.getKeyStroke(KeyEvent.VK_O,Event.CTRL_MASK); </p><p> m11.setAccelerator(keyopen); </p><p> JMenuItem m12=new JMenuItem("保存 ");</p><p> m
51、12.addActionListener(this);</p><p> KeyStroke keysave=KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK); </p><p> m12.setAccelerator(keysave); </p><p> JMenuItem m13=new JMen
52、uItem("另保存為 ");</p><p> m13.addActionListener(this);</p><p> JMenuItem m14=new JMenuItem("退出 ");</p><p> m14.addActionListener(this);</p><p> Ke
53、yStroke keyexit=KeyStroke.getKeyStroke(KeyEvent.VK_F4,Event.ALT_MASK); </p><p> m14.setAccelerator(keyexit); </p><p> ////////////////////////////////////////////</p><p> m2=new
54、JMenu("編輯(E)");</p><p> m2.setMnemonic('E');</p><p> JMenuItem m21=new JMenuItem("復(fù)制 ");</p><p> m21.addActionListener(this);</p><p> Ke
55、yStroke keycopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK); </p><p> m21.setAccelerator(keycopy); </p><p> JMenuItem m22=new JMenuItem("剪切 ");</p><p> m22.ad
56、dActionListener(this);</p><p> KeyStroke keycut=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK); </p><p> m22.setAccelerator(keycut); </p><p> JMenuItem m23=new JMenuItem(&
57、quot;粘貼 ");</p><p> m23.addActionListener(this);</p><p> KeyStroke keyp=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK); </p><p> m23.setAccelerator(keyp); </p>
58、<p> JMenuItem m24=new JMenuItem("刪除 ");</p><p> m24.addActionListener(this);</p><p> KeyStroke keydel=KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0); </p><p> m24
59、.setAccelerator(keydel); </p><p> JMenuItem m25=new JMenuItem("查找 ");</p><p> m25.addActionListener(this);</p><p> KeyStroke keyfind=KeyStroke.getKeyStroke(KeyEvent.VK_
60、F,Event.CTRL_MASK); </p><p> m25.setAccelerator(keyfind); </p><p> m26=new JMenuItem("查找下一個 ");</p><p> m26.addActionListener(this);</p><p> KeyStroke key
61、fn=KeyStroke.getKeyStroke(KeyEvent.VK_F3,0); </p><p> m26.setAccelerator(keyfn); </p><p> m26.setEnabled(false);</p><p> JMenuItem m27=new JMenuItem("替換 ");</p>
62、<p> m27.addActionListener(this);</p><p> KeyStroke keyrepl=KeyStroke.getKeyStroke(KeyEvent.VK_H,Event.CTRL_MASK); </p><p> m27.setAccelerator(keyrepl); </p><p> m271=new J
63、MenuItem("替換下一個");</p><p> m271.setEnabled(false);</p><p> m271.addActionListener(this);</p><p> KeyStroke keyrepn=KeyStroke.getKeyStroke(KeyEvent.VK_F6,0); </p>
64、<p> m271.setAccelerator(keyrepn); </p><p> JMenuItem m28=new JMenuItem("全選 ");</p><p> m28.addActionListener(this);</p><p> KeyStroke keyall=KeyStroke.getKeyStr
65、oke(KeyEvent.VK_A,Event.CTRL_MASK); </p><p> m28.setAccelerator(keyall); </p><p> JMenuItem m29=new JMenuItem("日期/時間 ");</p><p> m29.addActionListener(this);</p>
66、<p> ///////////////////////////////////////////</p><p> m3=new JMenu("格式(O)");</p><p> m3.setMnemonic('O');</p><p> font=new JMenuItem("字體[F]"
67、);</p><p> font.addActionListener(this);</p><p> JMenuItem m33=new JMenuItem("字體顏色 ");</p><p> m33.addActionListener(this);</p><p> //////////////////////
68、////////////////////</p><p> m5=new JMenu("視圖風(fēng)格(V)");</p><p> m5.setMnemonic('V');</p><p> m54=new JMenuItem("狀態(tài)欄 ");</p><p> m54.addAct
69、ionListener(this);</p><p> //////////////////////////////////////////</p><p> m6=new JMenu("幫助(H)");</p><p> m6.setMnemonic('H'); </p><p> m61=new
70、 JMenuItem("幫助主題 ");</p><p> m61.addActionListener(this);</p><p> m62=new JMenuItem("關(guān)于 ");</p><p> m62.addActionListener(this);</p><p><b>
71、 //添加各項</b></p><p> m1.add(m10); m1.add(m11); m1.add(m12); m1.add(m13); m1.addSeparator(); m1.add(m14);m3.add(font);</p><p> m2.add(m21); m2.add(m22); m2.add(m23); m2.add(m24); m2.addSe
72、parator(); m2.add(m25);</p><p> m2.add(m26); m2.add(m27); m2.add(m271); m2.addSeparator(); m2.add(m28);</p><p> m2.add(m29); m3.add(m33); m5.add(m54); m6.add(m61); </p><p> m6.ad
73、dSeparator(); m6.add(m62); mb.add(m1); mb.add(m2); mb.add(m3); </p><p> mb.add(m5); mb.add(m6); this.setJMenuBar(mb); //設(shè)置菜單欄</p><p> setVisible(true);</p><p><b> pack();&l
74、t;/b></p><p><b> show();</b></p><p> this.addWindowListener(new xxx(this));</p><p> }///構(gòu)造函數(shù)結(jié)束///</p><p> ////////////////事件處理///////////////////////
75、//////////////</p><p> public void actionPerformed(ActionEvent p)</p><p><b> {</b></p><p> if(p.getActionCommand()=="新建 ") //響應(yīng)菜單及工具欄事件</p><p>
76、<b> { </b></p><p> fname=null; //置文件名為空,便于判斷文件是否保存過</p><p> txt1.setText("");</p><p> state.setText(" 我的java編輯器------未命名文檔");</p><p>
77、;<b> }</b></p><p> if(p.getActionCommand()=="打開 ")</p><p><b> {</b></p><p><b> try {</b></p><p> if(this.choose.APPRO
78、VE_OPTION==this.choose.showOpenDialog(this))</p><p><b> { </b></p><p> path=this.choose.getSelectedFile().getPath(); </p><p> fname=this.choose.getSelectedFile().getN
79、ame();</p><p> File file=new File(path);</p><p> int flength=(int)file.length(); </p><p> FileReader fReader=new FileReader(file); </p><p> char[] data=new char[fle
80、ngth]; </p><p> fReader.read(data,0,flength); </p><p> txt1.setText(new String(data)); </p><p> state.setText(" 我的java編輯器------"+path+" 共"+flength+"字節(jié)&qu
81、ot;);//狀態(tài)欄統(tǒng)計文件字節(jié)數(shù)</p><p> txt1.setCaretPosition(0);</p><p><b> }}</b></p><p> catch(IOException e)</p><p><b> {}</b></p><p><
82、;b> }</b></p><p> if(p.getActionCommand()=="保存 ")</p><p><b> {</b></p><p> if(fname==null) //如果文件名為空,說明文件未被創(chuàng)建,彈出另存為對話框</p><p> { oth
83、ersave(); }</p><p><b> try {</b></p><p> File savefile=new File(path);</p><p> savefile.createNewFile(); </p><p> FileWriter fw=new FileWriter(savefile)
84、; </p><p> fw.write(txt1.getText()); </p><p> fw.close(); </p><p><b> }</b></p><p> catch(IOException e)</p><p><b> {}</b><
85、/p><p><b> }</b></p><p> if(p.getActionCommand()=="另保存為 ")</p><p> {othersave();}</p><p> if(p.getActionCommand()=="退出 ")</p>&l
86、t;p><b> {exit();}</b></p><p> //////////////////編輯////////////////////</p><p> if(p.getActionCommand()=="復(fù)制 ")</p><p> { txt1.copy(); }</p><p
87、> if(p.getActionCommand()=="剪切 ")</p><p> { txt1.cut(); }</p><p> if(p.getActionCommand()=="粘貼 ")</p><p> { txt1.paste(); }</p><p> if(p.get
88、ActionCommand()=="刪除 ")</p><p><b> { </b></p><p> txt1.replaceSelection("");</p><p><b> }</b></p><p> //////////////////
89、/////////////////////////////////////</p><p> if(p.getActionCommand()=="查找 ") // 創(chuàng)建查找對話框;</p><p> {find=new Dialog(this,"查找");</p><p> JPanel p1=new JPanel();
90、</p><p> JPanel p2=new JPanel();</p><p> findtxt=new JTextField(7);</p><p> p1.add(new JLabel("輸入要查找字符:"));</p><p> p1.add(findtxt);</p><p>
91、 p2.add(findenter);</p><p> find.add("Center",p1);</p><p> find.add("South",p2);</p><p> find.setSize(200,200);</p><p> find.show();</p>
92、<p><b> }</b></p><p> if(p.getSource()==findenter) ///點(diǎn)擊查找對話框的確定按鈕后的事件處理</p><p><b> {</b></p><p> if(findtxt.getText().equals("")) </p&
93、gt;<p> {find.dispose();}</p><p> else if(!findtxt.getText().equals(""))</p><p> { find.dispose();</p><p> str=txt1.getText();</p><p> startp=str.
94、indexOf(findtxt.getText());</p><p> endp=startp+findtxt.getText().length();</p><p> txt1.select(startp,endp);</p><p> m26.setEnabled(true);</p><p> newendp=endp;///
95、/////獲取這次查找的終點(diǎn)</p><p> notfindmethod();</p><p><b> }</b></p><p><b> }</b></p><p> //////////////////////////////////////////////////////////
96、</p><p> if(p.getActionCommand()=="查找下一個 ")</p><p><b> {</b></p><p> nexttemp=newendp; /////獲取上次查找的終點(diǎn)做為未查找字符串的起點(diǎn)</p><p> String strall=txt1.ge
97、tText();</p><p> txt1.select(nexttemp,strall.length()); /////選中所有未查找的字符串</p><p> strnext=txt1.getSelectedText();</p><p> newstartp=strnext.indexOf(findtxt.getText())+nexttemp;///
98、//在未查找的字符串里搜索對應(yīng)字符的在TXT1中的位置</p><p> newendp=newstartp+findtxt.getText().length();</p><p> txt1.select(newstartp,newendp); ////找到相應(yīng)文本,并選擇</p><p> notfindmethod();</p><p
99、><b> }</b></p><p> /////////////////////////////////////////////////////////</p><p> if(p.getActionCommand()=="替換 ")</p><p> {m271.setEnabled(true);<
100、/p><p> replace=new Dialog(this,"替換"); // 創(chuàng)建替換對話框;</p><p> JPanel p1=new JPanel();</p><p> JPanel p2=new JPanel();</p><p> JPanel p3=new JPanel();</p>
101、<p> findtxt=new JTextField(7);</p><p> repltxt=new JTextField(7);</p><p> p1.add(new JLabel("輸入原始字符:"));</p><p> p1.add(findtxt);</p><p> p2.add(n
102、ew JLabel("輸入替換字符:"));</p><p> p2.add(repltxt);</p><p> p3.add(replb);</p><p> replace.add("North",p1);</p><p> replace.add("Center",p
103、2);</p><p> replace.add("South",p3);</p><p> replace.setSize(200,150);</p><p> replace.show();</p><p><b> }</b></p><p> if(p.get
104、Source()==replb) ///點(diǎn)擊替換對話框的確定按鈕后的事件處理</p><p><b> {</b></p><p> replace.dispose();</p><p> str=txt1.getText();</p><p> startp=str.indexOf(findtxt.getTex
105、t());</p><p> endp=startp+findtxt.getText().length();</p><p> txt1.select(startp,endp);</p><p> txt1.replaceSelection(repltxt.getText());</p><p> /*txt1.replaceRang
106、e(repltxt.getText(),startp,endp);*/</p><p> newendp=endp; ///獲取這次替換的終點(diǎn)</p><p><b> }</b></p><p> //////////////////////////////////////////////////</p><p>
107、; if(p.getActionCommand()=="替換下一個")</p><p> {nexttemp=newendp; /////獲取上次查找的終點(diǎn)做為未查找字符串的起點(diǎn)</p><p> String strall=txt1.getText();</p><p> txt1.select(nexttemp,strall.leng
108、th()); /////選中所有未查找的字符串</p><p> strnext=txt1.getSelectedText();</p><p> newstartp=strnext.indexOf(findtxt.getText())+nexttemp;/////在未查找的字符串里搜索對應(yīng)字符的在TXT1中的位置</p><p> newendp=newst
109、artp+findtxt.getText().length();</p><p> txt1.select(newstartp,newendp); </p><p> notfindmethod();</p><p> txt1.replaceSelection(repltxt.getText());</p><p> /*txt1.
110、replaceRange(repltxt.getText(),newstartp,newendp);//替換字符*/</p><p><b> }</b></p><p> if(p.getActionCommand()=="全選 ")</p><p> {txt1.selectAll(); } </p>
111、<p> if(p.getActionCommand()=="日期/時間 ") //用DATE類插入當(dāng)前日期/時間,編譯時會出現(xiàn)說明</p><p> {txt1.setText(txt1.getText()+Calendar.getInstance().getTime().toString());}</p><p><b> //格式//&
112、lt;/b></p><p> if(p.getSource()==font)//字體</p><p><b> { </b></p><p> new MyFont(); </p><p><b> }</b></p><p> if(p.getActi
113、onCommand()=="字體顏色 ") //字體顏色</p><p><b> {</b></p><p> JColorChooser jColor=new JColorChooser(); //調(diào)用顏色面板,設(shè)置前景就可更改字體顏色</p><p> Color fcolor=txt1.getForegroun
114、d(); </p><p> txt1.setForeground( jColor.showDialog(txt1,"選擇字體顏色",fcolor));</p><p> normalStyle = ((StyledDocument) txt1.getDocument()).addStyle("Keyword_Style", null);<
115、/p><p> StyleConstants.setForeground(normalStyle, fcolor);</p><p><b> }</b></p><p><b> //試圖風(fēng)格//</b></p><p> if(p.getActionCommand()=="狀態(tài)欄
116、") //狀態(tài)欄的隱藏和顯視</p><p> {state.setVisible( !(state.isVisible()) );}</p><p> /////////////////////幫助///////////////////////////////////////////</p><p> if(p.getActionCommand()
117、=="幫助主題 ")</p><p> {myhelp help=new myhelp();</p><p> help.setSize(200,240);}</p><p> if(p.getActionCommand()=="關(guān)于 ")</p><p><b> { </b&
118、gt;</p><p> JLabel prompt=new JLabel("歡迎使用我的JAVA編輯器",JLabel.CENTER);</p><p> JOptionPane.showMessageDialog(null,prompt,"關(guān)于我的JAVA編輯器",JOptionPane.INFORMATION_MESSAGE);</p
119、><p><b> }</b></p><p><b> }</b></p><p> public void othersave() //另存為方法</p><p><b> {</b></p><p> if(choose.APPROVE_OP
120、TION==choose.showSaveDialog(this))</p><p><b> { </b></p><p> path=choose.getSelectedFile().getPath(); </p><p> newfiles=new File(path);</p><p> state.se
121、tText(" 我的java編輯器------"+path);</p><p> fname=choose.getSelectedFile().getName();;</p><p><b> try {</b></p><p> newfiles=new File(path);</p><p>
122、; newfiles.createNewFile();</p><p> FileWriter fw=new FileWriter(newfiles); </p><p> fw.write(txt1.getText()); </p><p> fw.close(); </p><p> }catch(IOException e)&
123、lt;/p><p><b> {}</b></p><p><b> }</b></p><p><b> }</b></p><p> public void notfindmethod() //提示查找不到的方法notfindmethod</p><
124、p><b> {</b></p><p> if(!txt1.getSelectedText().equals(findtxt.getText())) </p><p> { txt1.setCaretPosition(0); //光標(biāo)返回文件頭部</p><p> JOptionPane.showMessageDialog(nu
125、ll,"查找不到對應(yīng)的字符!","查找錯誤",JOptionPane.ERROR_MESSAGE);</p><p> m26.setEnabled(false); }</p><p><b> }</b></p><p> public void exit()</p><p&g
126、t; { int value;</p><p> String[] qq={"返回", "退出"};</p><p> value=JOptionPane.showOptionDialog(null, "你確定退出嗎?請注意保存文件!", "退出程序?", </p><p> J
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計--文本編輯器
- java課程設(shè)計---文本編輯器
- java課程設(shè)計---文本編輯器
- java 課程設(shè)計報告---用 java 設(shè)計文本編輯器mytxt
- java課程設(shè)計(文本編輯器)
- 文本編輯器_java課程設(shè)計實驗報告
- vb編輯器課程設(shè)計報告
- java課程設(shè)計報告-- 文本編輯器的設(shè)計與實現(xiàn)
- java課程設(shè)計--java語言編寫計算器和文檔編輯器
- 文本編輯器課程設(shè)計報告
- 簡單的行編輯器課程設(shè)計報告
- 簡易文本編輯器課程設(shè)計報告
- vb課程設(shè)計報告----文本編輯器
- vb課程設(shè)計報告---文本編輯器
- 文本編輯器課程設(shè)計
- 簡單的行編輯器課程設(shè)計
- vb課程設(shè)計文本編輯器
- visual_basic課程設(shè)計報告---文本編輯器
- 軟件工程課程設(shè)計--基于java的多頁面文本編輯器
- 課程設(shè)計----基于于java的記事本編輯器的設(shè)計與實現(xiàn)
評論
0/150
提交評論