2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  當(dāng)今,計(jì)算機(jī)以及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,社會(huì)正快速向信息化社會(huì)前進(jìn),我們需要更智能,更專業(yè)的軟件幫助我們完成工作,從而提高了工作效率。</p><p>  目前文本編輯器種類很多,所提供的功能也很多,但是能滿足用戶實(shí)現(xiàn)多種功能和進(jìn)行Java的編譯與運(yùn)行很少,不能更好的適應(yīng)當(dāng)前用戶的要求。本設(shè)計(jì)所完成的文本

2、編輯器功能是針對(duì)學(xué)習(xí)Java程序語(yǔ)言,因此我們利用Java程序設(shè)計(jì)虛擬機(jī)和軟件對(duì)用戶及使用者的應(yīng)用過程形成一整套完整的編寫代碼,編譯,運(yùn)行。</p><p>  本文本編輯器的開發(fā)主要包括界面窗口的菜單欄和工具欄以及樹結(jié)構(gòu),還有鏈接Java虛擬機(jī)實(shí)現(xiàn)編譯與運(yùn)行。使用SUN公司的Java中的GUI作為開發(fā)技術(shù),利用其提供的各種類與接口,首先建立系統(tǒng)應(yīng)用原型。</p><p>  本文本編輯器

3、的開發(fā)采用JDK6.0和 UltraEdit為開發(fā)工具,操作系統(tǒng)為Windows98/Windows 2000/Windows XP等。</p><p>  關(guān)鍵詞:面向?qū)ο蟪绦蛟O(shè)計(jì),GUI,文本編輯器,編譯,運(yùn)行</p><p><b>  Abstract</b></p><p>  Now, computer and internet a

4、re experience a sharp development, the information automatic function is more and more powerful, and our society is stepping in the information age. So, more Intelligence and more specialized soft are needed to help us i

5、mprove the efficiency in job.</p><p>  At present the text editor type are many, the function provided are also many too, But can satisfy the user for many kinds of functions and can use Java for the transla

6、tion and debug are very few, so can not adapt current user's request much better. This design completes the text editor function is aims at the Java beginner who study the Java program language,</p><p> 

7、 Therefore we use the Java programming hypothesized machine and software form an entire set of complete compilation code to the formation user's application process, translation, debug. </p><p>  This te

8、xt editor's development mainly includes the contact of surface menu of the window and the tool fence as well as the tree structure, also links to the java hypothesized machine to the translation and debug. Use Java G

9、UI API, and the classes of SUN Corporation to found the initial prototype system, then, carries on the demand iteration to the initial prototype system, unceasingly reversing and improvement, until forms the feasible sys

10、tem.</p><p>  This text editor's development uses JDK6.0 and Ultra Edit as the development kit, operate system for Windows98/ Windows 2000/ Windows/XP </p><p>  Keywords: OOP, java, GUI(Grap

11、hical User Interface),text editor, translation, debug.</p><p><b>  目 錄</b></p><p><b>  1 前 言1</b></p><p>  2 問題的提出及可行性研究2</p><p>  2.1 問題的提

12、出及定義2</p><p>  2.2 可行性研究3</p><p>  2.2.1 對(duì)現(xiàn)行文本編輯器的分析3</p><p>  2.2.2 新文本編輯器的可行性研究分析3</p><p>  3 用戶需求分析5</p><p>  3.1 用戶調(diào)查5</p><p>  3.2

13、 確定目標(biāo)系統(tǒng)的功能5</p><p>  4 系統(tǒng)設(shè)計(jì)與開發(fā)環(huán)境6</p><p>  4.1系統(tǒng)相關(guān)類的設(shè)計(jì)6</p><p>  4.2 開發(fā)語(yǔ)言及其開發(fā)環(huán)境10</p><p>  4.2.1開發(fā)語(yǔ)言概述10</p><p>  4.2.2 Java開發(fā)環(huán)境——JDK的介紹12</p>

14、<p>  4.3 環(huán)境變量的設(shè)置13</p><p>  4.3.1.環(huán)境變量的作用13</p><p>  4.3.2 如何設(shè)置環(huán)境變量14</p><p>  5 關(guān)鍵技術(shù)和源代碼的實(shí)現(xiàn)16</p><p>  5.1 關(guān)鍵技術(shù)剖析16</p><p>  5.2 源碼分析17<

15、/p><p>  6 系統(tǒng)測(cè)試42</p><p>  6.1 測(cè)試方案42</p><p>  6.2 測(cè)試項(xiàng)目42</p><p>  6.3 編輯器截圖演示43</p><p><b>  致 謝44</b></p><p><b>  參考文獻(xiàn)

16、45</b></p><p><b>  1 前 言</b></p><p>  Java可以方便的開發(fā)GUI程序,在Java語(yǔ)言提供的GUI構(gòu)建工具中,可以分為“組件(component)”和“容器”(container)兩種。組件有:按鈕,標(biāo)簽,復(fù)選框,單選按鈕,選擇框,列表框,文本框,滾動(dòng)條,畫布,和菜單等;容器有:程序的啟動(dòng)封面,窗體和對(duì)話框。本

17、設(shè)計(jì)主要是通過AWT(抽象窗口化工具包)和Swing來實(shí)現(xiàn)功能的。</p><p>  本文本編輯器的設(shè)計(jì),能打開,編輯和保存html,java,cpp,txt文件,能夠在文件中進(jìn)行查找和替換,而且支持java源文件的編譯與運(yùn)行,前提是機(jī)器上已經(jīng)安裝了java虛擬機(jī)并配置好了java相關(guān)的環(huán)境變量。</p><p>  此文本編輯器是集代碼編寫,源代碼編譯和類運(yùn)行于一體。</p>

18、;<p>  2 問題的提出及可行性研究</p><p>  2.1 問題的提出及定義</p><p>  隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,文本編輯器成為大家必不可少的工具,但是不同的用戶對(duì)文本編輯器有不同的功能需求,所以除了像office中的word還有去WPS等大眾文本編輯器,還需要一些帶有一定相關(guān)專業(yè)功能的文本編輯器,可以方便用戶進(jìn)行工作與開發(fā)。</p>&l

19、t;p>  1、本設(shè)計(jì)就是針對(duì)java初學(xué)者所開發(fā)的,集源代碼編輯,編譯,運(yùn)行于一體的文本編輯器。</p><p>  2、根據(jù)此文本編輯器的的實(shí)際要求,本系統(tǒng)需要實(shí)現(xiàn)以下功能:</p><p>  3、要求在運(yùn)行該編輯器時(shí),可以直接編輯默認(rèn)的新建文件File,在左邊的樹中正在編輯的文件顯示有File1;</p><p>  4、要求在文本編輯器的右邊的文件文

20、本域用于編輯文字和代碼,右邊中間的文字域時(shí)顯示光標(biāo)的行號(hào),右邊下面的文本域是顯示編譯和運(yùn)行信息;</p><p>  5、要求在窗口頂部設(shè)有菜單欄,分別有File,Option,Advance,Edit,Help;</p><p>  6、要求在菜單欄下面設(shè)有工具欄,分別有打開按鈕,新建按鈕,保存按鈕,幫助按鈕,推出按鈕,編譯按鈕,運(yùn)行按鈕,復(fù)制按鈕,剪切按鈕,粘貼按鈕;</p>

21、;<p>  7、要求能新建,打開和保存文件;若是新建文件則將新建文件保存為newFile1.txt,在編輯器左邊樹中正在編輯的文件顯示為newFile1.txt,右邊的文件文本域所在的Tab標(biāo)簽上顯示的也是newFile1.txt。</p><p>  8、要求能夠通過查找功能,在當(dāng)前文件中查找字符串,在彈出的對(duì)話框中輸入所要查找的字符串,點(diǎn)擊確定開始查找,找到后顯示高亮;</p>

22、<p>  9、要求能夠連接本機(jī)的java虛擬機(jī),對(duì)源代碼進(jìn)行編譯及編譯后運(yùn)行</p><p><b>  2.2 可行性研究</b></p><p>  2.2.1 對(duì)現(xiàn)行文本編輯器的分析</p><p>  市場(chǎng)上出現(xiàn)的和用戶所使用的文本編輯器種類繁多,功能也是各式各樣,其中有相當(dāng)一部分是很優(yōu)秀的。但是面向java初學(xué)者的操作簡(jiǎn)單

23、的,界面友好的,集源代碼編輯,編譯,運(yùn)行于一體的編輯器并不多見。</p><p>  2.2.2 新文本編輯器的可行性研究分析</p><p>  根據(jù)此文本編輯器的使用對(duì)象,新目標(biāo)的提法不盡相同,例如:</p><p>  1、提高工作效率和降低難度;</p><p>  2、提供新的編譯與運(yùn)行處理功能;</p><p&

24、gt;  新編輯器的目標(biāo)確定后,就可以從以下三方面對(duì)能否實(shí)現(xiàn)新目標(biāo)進(jìn)行可行性分析:</p><p><b>  (1)技術(shù)可行性</b></p><p>  面向?qū)ο笫且环N新興的程序設(shè)計(jì)方法,或者說是一種新的程序設(shè)計(jì)規(guī)范(paradigm),其基本思想是使用對(duì)象、類、繼承、封裝、消息等基本概念來進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來構(gòu)造軟件系統(tǒng),并且

25、在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。開發(fā)一個(gè)軟件是為了解決某些問題,這些問題所涉及的業(yè)務(wù)范圍稱作該軟件的問題域。其應(yīng)用領(lǐng)域不僅僅是軟件,還有計(jì)算機(jī)體系結(jié)構(gòu)和人工智能等。許多程序開發(fā)工具,如 java、Visual Basic 6.0、Delphi等等,都支持面向?qū)ο蟮某绦蜷_發(fā)。</p><p>  這些技術(shù)目前已經(jīng)成熟,被廣泛應(yīng)用與各個(gè)領(lǐng)域。運(yùn)用GUI中的awt和swing以及相關(guān)的類完全可以實(shí)現(xiàn)所要求的功

26、能。因此,其設(shè)計(jì)開發(fā)在技術(shù)上是可行的。</p><p><b> ?。?)經(jīng)濟(jì)可行性</b></p><p>  經(jīng)濟(jì)可行性研究是對(duì)設(shè)計(jì)投入使用后帶來的經(jīng)濟(jì)效益進(jìn)行估計(jì)。本設(shè)計(jì)所消耗的物力與財(cái)力不多,關(guān)鍵是思想架構(gòu),設(shè)計(jì)成功后可在互聯(lián)網(wǎng)上供用戶下載。經(jīng)濟(jì)效益與經(jīng)濟(jì)投資是很少的,也達(dá)到收支平衡。</p><p><b> ?。?)運(yùn)行可

27、行性</b></p><p>  系統(tǒng)設(shè)計(jì)并運(yùn)行于當(dāng)前流行的Windows系列操作系統(tǒng),具有Windows傳統(tǒng)的操作風(fēng)格,僅要求系統(tǒng)帶有JVM(java虛擬機(jī))。此文本編輯器操作簡(jiǎn)單,界面友好,用戶可以立即使用。總之,系統(tǒng)具有較好的運(yùn)行可行性。</p><p>  綜上所述,開發(fā)一個(gè)專門的java文本編輯器是可行的。</p><p><b> 

28、 3 用戶需求分析</b></p><p><b>  3.1 用戶調(diào)查</b></p><p>  經(jīng)過詳細(xì)的調(diào)研,并多次與初學(xué)java潛在用戶進(jìn)行研討后,首先加深了對(duì)java文本管理器的的深刻了解,其次,充分熟悉java源代碼編輯,編譯和運(yùn)行。</p><p>  3.2 確定目標(biāo)系統(tǒng)的功能</p><p&

29、gt;  通過詳細(xì)的用戶調(diào)查,可以基本確定目標(biāo)系統(tǒng)要達(dá)到的目標(biāo)了。</p><p>  需求分析的任務(wù)是確定功能必須完成的工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。在經(jīng)過多方了解和調(diào)查后,基本清楚了此文本編輯器的功能要求。</p><p>  必須完成的功能如下:</p><p><b>  文本新建功能;</b></p&g

30、t;<p><b>  文本打開功能; </b></p><p><b>  文本保存功能;</b></p><p><b>  字符串查詢功能;</b></p><p><b>  源文件編譯功能;</b></p><p> ?。?) 代碼

31、運(yùn)行功能。</p><p>  4 系統(tǒng)設(shè)計(jì)與開發(fā)環(huán)境</p><p>  系統(tǒng)設(shè)計(jì)一般分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。經(jīng)過需求分析階段的工作,已經(jīng)清楚系統(tǒng)必須完成的工作,下面的工作就應(yīng)該是決定“如何做”的問題??傮w設(shè)計(jì)的基本目的就是“概括地說系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”。另一方面的主要工作是設(shè)計(jì)軟件的結(jié)構(gòu),即確定系統(tǒng)都由哪些模塊組成及模塊之間的相互關(guān)系。</p><p>  4

32、.1系統(tǒng)相關(guān)類的設(shè)計(jì)</p><p>  圖4-1 Editor繼承了JFrame類</p><p>  圖4-2 是本設(shè)計(jì)中用到的JComponent及其擴(kuò)展類的總括。</p><p>  圖4-3 本圖顯示復(fù)制,粘貼,剪貼,動(dòng)畫的顯示停止,啟動(dòng),暫停事件繼承ActionListener類</p><p>  圖4-4 FileCh

33、oose類繼承了JFileChoose類;此文件選擇器能夠打開和保存文件</p><p>  4.2 開發(fā)語(yǔ)言及其開發(fā)環(huán)境</p><p>  4.2.1開發(fā)語(yǔ)言概述</p><p>  Sun公司在Java語(yǔ)言的白皮書中是這樣定義Java的:</p><p>  Java是一個(gè)簡(jiǎn)單的、面向?qū)ο蟮?、分布的、健壯的、安全的、與平臺(tái)無關(guān)的、可移植

34、的、高性能的、多線程的,以及動(dòng)態(tài)的解釋型語(yǔ)言。</p><p>  Java是一種簡(jiǎn)單的語(yǔ)言。它用到的概念不多,而且多為程序員所熟悉。如果你是一名程序員,掌握J(rèn)ava對(duì)你來說是易如反掌的事。即使你沒有學(xué)過任何編程語(yǔ)言,學(xué)習(xí)Java也要比學(xué)習(xí)C++要容易的多。</p><p>  由于Java最初是為控制電子產(chǎn)品設(shè)計(jì)的,因此它必須簡(jiǎn)單明了。為了保證這種簡(jiǎn)單性,Java去掉了C++中許多復(fù)雜的

35、、冗余的、有二義性的概念,例如操作符重載、多繼承、數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換等。為了將程序員從復(fù)雜的內(nèi)存管理的負(fù)擔(dān)中解脫出來,同時(shí)也是為了減少錯(cuò)誤,Java使用了自動(dòng)內(nèi)存垃圾收集機(jī)制,程序員只要在需要的時(shí)候申請(qǐng)即可,不需要釋放,而由Java自己來收集、釋放內(nèi)存中的無用的塊。</p><p>  Java是一種支持分布式操作的程序設(shè)計(jì)語(yǔ)言。使用Java提供的URL類,用戶可以象訪問本地文件一樣訪問網(wǎng)絡(luò)上的對(duì)象,使用非常方便。

36、在客戶機(jī)/服務(wù)器的模式下,Java還可以將運(yùn)算從服務(wù)器端分散到客戶端,提高系統(tǒng)的效率,避免了服務(wù)器的瓶頸制約。Java的網(wǎng)絡(luò)類庫(kù)支持分布式的編程。Socket類提供可靠的流式網(wǎng)絡(luò)的連接,支持TCP/IP協(xié)議。通過編寫協(xié)議句柄,程序員還可以擴(kuò)充Java支持的協(xié)議集合。</p><p>  Java提供非常有效的安全控制。由于Java應(yīng)用于網(wǎng)絡(luò)程序的開發(fā),因而安全性變的至關(guān)重要。因?yàn)镴ava小程序需要下載到客戶端解釋

37、執(zhí)行,所以,如果沒有安全控制,就會(huì)給一些網(wǎng)絡(luò)黑客以可乘之機(jī),這對(duì)用戶來說是非常危險(xiǎn)的。所幸的是,Java的安全機(jī)制可以有效的防止病毒程序的產(chǎn)生、下載程序?qū)Ρ镜匚募到y(tǒng)的破壞,以及網(wǎng)絡(luò)黑客竊取密碼和入侵。</p><p>  Java是一種非常健壯的語(yǔ)言。因?yàn)樵贘ava中使用了以下手段:</p><p>  自動(dòng)內(nèi)存垃圾收集機(jī)制。Java自動(dòng)收集無用的內(nèi)存單元,進(jìn)而防止了由于內(nèi)存泄漏導(dǎo)致的動(dòng)

38、態(tài)內(nèi)存分配問題。</p><p>  完善的異常處理機(jī)制,既簡(jiǎn)化了錯(cuò)誤處理任務(wù)和恢復(fù),也增加了程序的可讀性。</p><p>  Java具有非常好的平臺(tái)無關(guān)性和可移植性。因?yàn)镴ava最初是為對(duì)電子產(chǎn)品編程而設(shè)計(jì)的,所以它具有完美的平臺(tái)無關(guān)性。它使用一種與平臺(tái)無關(guān)的代碼──字節(jié)碼,而不是通常的特定機(jī)器上的機(jī)器碼,由平臺(tái)上的Java虛擬機(jī)中的Java解釋器解釋執(zhí)行。Java虛擬機(jī)是免費(fèi)的,在

39、許多平臺(tái)上都有。</p><p>  Java提供了良好的可移植性。使用Java作為編程語(yǔ)言,只要進(jìn)行一次程序開發(fā)工作,所開發(fā)的程序不需要經(jīng)過任何改動(dòng),便能在各種平臺(tái)上運(yùn)行。Java使用兩種方法使Java的應(yīng)用程序不依賴與具體的系統(tǒng):</p><p>  采用基于國(guó)際標(biāo)準(zhǔn)的數(shù)據(jù)類型。Java的原始數(shù)據(jù)類型在任何機(jī)器上都是一樣的,例如整型總是32位,長(zhǎng)整型總是64位等。</p>

40、<p>  Java是一種高性能的語(yǔ)言?!棒~與熊掌不可兼得”,通常,健壯性、安全性、平臺(tái)無關(guān)性、可移植性等方面的提高總是要以犧牲性能為代價(jià)的。Java也不例外,Java的內(nèi)存管理增加了運(yùn)行時(shí)系統(tǒng)的復(fù)雜性,因?yàn)镴ava運(yùn)行時(shí)系統(tǒng)必須內(nèi)嵌一個(gè)內(nèi)存管理模塊;同樣,Java程序的解釋執(zhí)行的效率也要低于直接執(zhí)行編譯后的源碼的效率。但是Java采用了一些很好的措施來彌補(bǔ)這些性能上的差距:</p><p>  生成

41、高效的字節(jié)碼。Java字節(jié)碼的設(shè)計(jì)充分考慮了性能的因素,字節(jié)碼的格式簡(jiǎn)單,解釋器可以生成高效的機(jī)器碼。</p><p>  提供了即時(shí)編譯和嵌入C代碼的可選措施。即時(shí)編譯是指在運(yùn)行時(shí)把字節(jié)碼編譯成機(jī)器碼。</p><p>  4.2.2 Java開發(fā)環(huán)境——JDK的介紹</p><p>  在Sun公司推出Java語(yǔ)言的同時(shí),也推出了Java的一系列開發(fā)工具,如JD

42、K(Java Developer’s Kit)。JDK是可以從網(wǎng)上免費(fèi)下載的Java開發(fā)工具集。隨后,其它一些著名的公司也相繼推出了自己的Java開發(fā)工具,例如Microsoft公司的Visual J++,Borland公司的JBuilder,IBM公司的VisualAge for Java,Synmentac的Café等。本節(jié)中將簡(jiǎn)單的介紹一下Sun公司的JDK;至于Microsoft公司的Visual J++,將是本書其它

43、章節(jié)重點(diǎn)介紹的內(nèi)容。</p><p>  JDK是Sun公司推出的Java開發(fā)工具集,由于Sun公司是Java語(yǔ)言的創(chuàng)始者和Java規(guī)范的制定者,所以JDK自然是最權(quán)威的Java開發(fā)工具。您寫的Java程序是否符合Java語(yǔ)言規(guī)范的要求,用JDK提供的Java編譯器一試便知。市場(chǎng)上其它公司的Java開發(fā)工具有的在某些地方并不完全遵從Java語(yǔ)言規(guī)范,例如Microsoft公司的Visual J++,但是JDK卻絕

44、對(duì)和Java語(yǔ)言規(guī)范保持一致,而且每當(dāng)有新的Java語(yǔ)言規(guī)范推出時(shí),就會(huì)有相應(yīng)的JDK同時(shí)推出。當(dāng)前JDK已經(jīng)推出了其最新版本──JDK1.6</p><p>  4.3 環(huán)境變量的設(shè)置</p><p>  4.3.1.環(huán)境變量的作用</p><p>  JAVA程序能夠順利編譯需要兩個(gè)環(huán)境變量,一個(gè)是PATH(path),一個(gè)是CLASSPATH(classpat

45、h)。那么這兩個(gè)環(huán)境變量代表什么呢?或者說究竟在JAVA程序編譯中有什么作用呢?這就要涉及到WINDOWS的基本知識(shí)了。在WINDOWS環(huán)境中,每一條能用的指令都保存在硬盤的“某個(gè)角落”,比如說指令NOTEPAD(WINDOWS的記事本指令,在C:\WINNT目錄下),那么在DOS命令提示符下直接輸入NOTEPAD就可以打開記事本了。但是一旦我們把C:\WINNT目錄下的NOTEPAD.EXE這個(gè)可執(zhí)行文件移開(比如說我們現(xiàn)在把它“剪切

46、”到D盤根目錄下)我們?cè)僭贒OS提示符下直接輸入NOTEPAD時(shí)就無法再打開記事本了,但是我們?cè)贒OS下改變路徑輸入D:\NOTEPAD(或者先輸入cd D: 在輸入NOTEPAD也行)就可以打開記事本了。這就是說在我們直接輸入NOTEPAD的時(shí)候,其實(shí)其默認(rèn)路徑就是C:\WINN。假設(shè)我們要運(yùn)行一個(gè)JAVA程序(hello.java)就要先把它的class文件移動(dòng)到JAVA里的bin目錄下 然后打開DOS,把路徑改到JAVA的BIN

47、目錄下 </p><p>  “假設(shè)我們要運(yùn)行一個(gè)JAVA程序(hello.java)就要先把它的class文件移動(dòng)到JAVA里的bin目錄下”,為什么要這樣做呢?因?yàn)槲覀冊(cè)谟玫絡(luò)ava hello.class這條指令的時(shí)候,DOS不知道hello.class這個(gè)文件在哪里,他就先到當(dāng)前目錄中去找,如果找到就運(yùn)行,否則失敗。當(dāng)然,如果說hello.java在D盤根目錄下,你也可以用java D:\hello.cl

48、ass這條指令來運(yùn)行,但是每次這樣做也確實(shí)夠麻煩。WINDOWS就提供了這樣一個(gè)環(huán)境變量——classpath,如果沒有就應(yīng)該新建一個(gè)。我們把D:\這個(gè)路徑賦值給classpath,那么下次在運(yùn)行java hello.java的時(shí)候就先在當(dāng)前目錄中到,如果找到就運(yùn)行,如果找不到就在classpath的值路徑下去找,找到就運(yùn)行,找不到就失敗。</p><p>  以上闡述了path和classpath兩個(gè)環(huán)境變量的

49、作用,如果設(shè)置好了。java的編譯和運(yùn)行就基本上沒什么問題了。</p><p>  4.3.2 如何設(shè)置環(huán)境變量</p><p>  Windows下JAVA環(huán)境變量的設(shè)置祥解:</p><p>  Windows下JAVA用到的環(huán)境變量主要有3個(gè),JAVA_HOME、CLASSPATH、PATH。下面逐個(gè)分析。</p><p>  JAVA

50、_HOME指向的是JDK的安裝路徑,如x:\JDK_1.4.2,在這路徑下你應(yīng)該能夠找到bin、lib等目錄。值得一提的是,JDK的安裝路徑可以選擇任意磁盤目錄,不過建議你放的目錄層次淺一點(diǎn),如果你放的目錄很深,比如x:\XXXXXX\xxxxx\XXXX\xxxx\XXXX\xxxx\XXXX\xxx……</p><p><b>  設(shè)置方法如下:</b></p><p

51、>  JAVA_HOME=x:\JDK_1.4.2</p><p>  PATH環(huán)境變量原來Windows里面就有,你只需修改一下,使他指向JDK的bin目錄,這樣你在控制臺(tái)下面編譯、執(zhí)行程序時(shí)就不需要再鍵入一大串路徑了。設(shè)置方法是保留原來的PATH的內(nèi)容,并在其中加上%JAVA_HOME%\bin (注,如果你對(duì)DOS批處理不了解,你可能不明白%%引起來的內(nèi)容是什么意思;其實(shí)這里是引用上一步設(shè)定好的環(huán)境變

52、量JAVA_HOME,你寫成x:\JDK_1.4.2也是可以的;你可以打開一個(gè)控制臺(tái)窗口,輸入echo %JAVA_HOME%來看一下你的設(shè)置結(jié)果) :</p><p>  PATH=%JAVA_HOME%\bin;%PATH%</p><p>  同樣,%PATH%是引用以前你設(shè)置的PATH環(huán)境變量,你照抄以前的值就行了。</p><p>  CLASSPATH環(huán)

53、境變量我放在最后面,是因?yàn)橐院竽愠霈F(xiàn)的莫名其妙的怪問題80%以上都可能是由于CLASSPATH設(shè)置不對(duì)引起的,所以要加倍小心才行。</p><p>  CLASSPATH=.\;%JAVA_HOME%\lib\tools.jar。</p><p>  首先要注意的是最前面的".\;",這個(gè)是告訴JDK,搜索CLASS時(shí)先查找當(dāng)前目錄的CLASS文件——為什么這樣搞,這是

54、由于LINUX的安全機(jī)制引起的,LINUX用戶很明白,WINDOWS用戶就很難理解(因?yàn)閃INDOWS默認(rèn)的搜索順序是先搜索當(dāng)前目錄的,再搜索系統(tǒng)目錄的,再搜索PATH環(huán)境變量設(shè)定的)。</p><p>  為什么CLASSPATH后面指定了tools.jar這個(gè)具體文件?不指定行不行?這個(gè)是由java語(yǔ)言的import機(jī)制和jar機(jī)制決定的。</p><p>  具體的設(shè)定方法: win

55、2k\xp用戶右鍵點(diǎn)擊我的電腦->屬性->高級(jí)->環(huán)境變量,修改下面系統(tǒng)變量那個(gè)框里的值就行了。</p><p>  win9x用戶修改autoexec.bat文件,在其末尾加入: </p><p>  set JAVA_HOME=x:\JDK_1.4.2</p><p>  set PATH=%JAVA_HOME%\bin;%PATH%</

56、p><p>  set CLASSPATH=.\;%JAVA_HOME%\lib\tools.jar</p><p>  5 關(guān)鍵技術(shù)和源代碼的實(shí)現(xiàn)</p><p>  5.1 關(guān)鍵技術(shù)剖析</p><p>  JFrame類的setJMenuBar的方法為窗口添加菜單欄JMenuBar,JMenuBar的add方法為菜單欄添加菜單JMenu,

57、JMenu的add方法為菜單添加菜單項(xiàng)JMenuItem,它們之間的關(guān)系是樹形關(guān)系。需要為每個(gè)菜單項(xiàng)添加事件處理器,當(dāng)單擊菜單項(xiàng)時(shí),觸發(fā)事件。</p><p>  JToolBar為工具欄,可以在工具欄中添加按鈕或者標(biāo)簽。JButton的setToolTipText方法設(shè)置按鈕的提示信息,當(dāng)鼠標(biāo)停留在按鈕上若干時(shí)間后,會(huì)顯示提示信息。</p><p>  分隔窗格JSplitPane類用于

58、分隔兩個(gè)組件,可以由用戶交互的調(diào)整組件的大小。根據(jù)分隔條的方向,把JSplitPane分成有兩種:VERTICAL_SPLIT表示水平分隔條,HORIZONTAL_SPLIT表示垂直分隔條。setDividerlocation方法設(shè)置分隔條的坐標(biāo)。</p><p>  JTree類實(shí)現(xiàn)樹結(jié)構(gòu),樹中有多個(gè)節(jié)點(diǎn),但是且只有一個(gè)根節(jié)點(diǎn)。通用的節(jié)點(diǎn)類型為DefaultMutableTreeNode,它的add方法為節(jié)點(diǎn)添

59、加子節(jié)點(diǎn)。</p><p>  JTextArea文本域顯示文件內(nèi)容,將它放置在JScrollPane中,使其具備滾動(dòng)條。setCareColor方法設(shè)置插入光標(biāo)的顏色;addCareListener方法為文本域設(shè)置光標(biāo)事件處理器,當(dāng)光標(biāo)位置改變時(shí)觸發(fā)該類事件;getText和setText方法獲得和設(shè)置文本域的內(nèi)容;select方法高亮顯示文本域中指定的文本;setCaretPositin方法獲得光標(biāo)在文本域中

60、的位置;getLineOfOffset方法獲得指定位置在文本域中的行號(hào);getLineStartOffset方法獲取指定行的第一個(gè)字符在文本域中的位置;getLineEndOffset方法獲取指定行的最后一個(gè)字符在文本去中的位置。</p><p>  JTabbedPane實(shí)現(xiàn)多頁(yè)面的管理,每個(gè)頁(yè)面有一個(gè)標(biāo)簽。addTab方法添加頁(yè)面;addChangeListener方法設(shè)置頁(yè)面切換事件處理器;setSelec

61、tedIndex方法設(shè)置選擇頁(yè)面編號(hào);getSelectendIndex方法獲取被選擇的頁(yè)面的編號(hào);setTitleAt方法設(shè)置指定頁(yè)面標(biāo)簽;getTitleAt方法獲取指定頁(yè)面的標(biāo)簽。</p><p>  組件的addKeyListener方法為組件注冊(cè)鍵盤事件管理器,鍵盤事件管理器必須實(shí)現(xiàn)KeyListener接口,或者繼承KeyAdapter,keyPressed方法處理按鍵事件,參數(shù)類型為keyEvent

62、,KeyEvent的getKeyCode方法可以獲得備按下的鍵的代碼;isControlDown方法判斷Ctrl鍵是否被按下;isAltDown方法判斷Alt鍵是否被按下。</p><p>  JFileChoose文件選擇器能夠打開和保存文件,提交選擇時(shí)approveSelection方法被調(diào)用,取消選擇時(shí)cancelSelection方法被調(diào)用;getCurrentDirectory方法獲得文件選擇器當(dāng)前目錄

63、,getSelectedFile方法獲得文件選擇器選擇的文件。</p><p>  JOptionPane用于彈出標(biāo)準(zhǔn)的對(duì)話框,類型有很多種。showConfirmDialog方法彈出確認(rèn)信息對(duì)話框,要求用戶確認(rèn)或者取消;showMessageDialog方法彈出提示信息提示框;showInputDialog方法彈出輸入信息對(duì)話框,要求用戶輸入信息。</p><p>  在編譯和運(yùn)行Jav

64、a程序時(shí),需要調(diào)用本地的java和javac命令,通過Runtime的exec方法可以調(diào)用本地命令。</p><p><b>  5.2 源碼分析</b></p><p>  (1) Editor類</p><p><b>  /**</b></p><p>  * 一個(gè)簡(jiǎn)單的文本編輯器,能夠編輯

65、html、java、cpp、txt文件,</p><p>  * 并支持java的編譯與運(yùn)行</p><p><b>  */</b></p><p>  public class Editor extends JFrame {</p><p>  /********菜單欄、菜單和菜單項(xiàng)*********/</p&

66、gt;<p>  JMenuBar menuBar = new JMenuBar();</p><p>  JMenu fileMenu = new JMenu("File");</p><p>  JMenu optionMenu = new JMenu("Option");</p><p>  JMenu a

67、dvanceMenu = new JMenu("Advance");</p><p>  JMenu helpMenu = new JMenu("Help");</p><p>  JMenu editMenu = new JMenu("Edit");</p><p>  JMenuItem newMenu

68、Item = new JMenuItem("new");</p><p>  JMenuItem openMenuItem = new JMenuItem("Open");</p><p>  JMenuItem saveMenuItem = new JMenuItem("Save");</p><p> 

69、 JMenuItem exitMenuItem = new JMenuItem("exit");</p><p>  JMenuItem findMenuItem = new JMenuItem("Find");</p><p>  JMenuItem findNextMenuItem = new JMenuItem("Find Next&

70、quot;);</p><p>  JMenuItem replaceMenuItem = new JMenuItem("Replace");</p><p>  JMenuItem compileMenuItem = new JMenuItem("Compile");</p><p>  JMenuItem buildMen

71、uItem = new JMenuItem("Build");</p><p>  JMenuItem stopFlashMenuItem = new JMenuItem("Stop Flash");</p><p>  JMenuItem startFlashMenuItem = new JMenuItem("Start Flash&qu

72、ot;);</p><p>  JMenuItem helpMenuItem = new JMenuItem("Help");</p><p>  JMenuItem copyMenuItem = new JMenuItem("Copy");</p><p>  JMenuItem cutMenuItem = new JMen

73、uItem("Cut");</p><p>  JMenuItem pasteMenuItem = new JMenuItem("Paste");</p><p>  /********文件內(nèi)容的顯示****/</p><p>  //用多個(gè)文本域存放多個(gè)文件內(nèi)容,文本域放在JScrollPane里</p>&l

74、t;p>  //而JScrollPane放在JTabbedPane中,這就是一個(gè)多頁(yè)面的布局</p><p>  //多個(gè)文本域,每個(gè)文本域顯示一個(gè)文件的內(nèi)容</p><p>  JTextArea[] fileTextAreas = new JTextArea[10];</p><p>  //編譯或者運(yùn)行時(shí)的控制臺(tái)信息</p><p&g

75、t;  JTextArea consoleTextArea = new JTextArea();</p><p>  JScrollPane[] fileScrollPanes = new JScrollPane[10];</p><p>  JScrollPane consoleScrollPane;</p><p>  //多個(gè)文本域放在不同tab里</p

76、><p>  JTabbedPane fileTabbedPane = new JTabbedPane();</p><p>  /**********工具欄以及工具欄上的按鈕**********/</p><p>  JToolBar toolBar = new JToolBar();</p><p>  JButton openButton

77、= new JButton(new ImageIcon(loadImage("image/open.gif")));</p><p>  JButton newButton = new JButton(new ImageIcon(loadImage("image/new.gif")));</p><p>  JButton saveButton =

78、new JButton(new ImageIcon(loadImage("image/save.gif")));</p><p>  JButton helpButton = new JButton(new ImageIcon(loadImage("image/help.gif")));</p><p>  JButton exitButton =

79、new JButton(new ImageIcon(loadImage("image/close.gif")));</p><p>  JButton compileButton = new JButton(new ImageIcon(loadImage("image/compile.gif")));</p><p>  JButton buildB

80、utton = new JButton(new ImageIcon(loadImage("image/build.gif")));</p><p>  JButton copyButton = new JButton(new ImageIcon(loadImage("image/copy.gif")));</p><p>  JButton cutB

81、utton = new JButton(new ImageIcon(loadImage("image/cut.gif")));</p><p>  JButton pasteButton = new JButton(new ImageIcon(loadImage("image/paste.gif")));</p><p>  //該文本域顯示當(dāng)前光標(biāo)

82、在當(dāng)前文本域中的行號(hào)</p><p>  JTextArea showLineNoTextArea = new JTextArea();</p><p>  //對(duì)話框窗體,程序中所有對(duì)話框都顯示在該窗體中</p><p>  JFrame dialogFrame = new JFrame();</p><p>  /*****文件名以樹型結(jié)

83、構(gòu)在左邊顯示*******/</p><p>  JTree tree;</p><p>  DefaultMutableTreeNode root;</p><p>  DefaultMutableTreeNode[] nodes = new DefaultMutableTreeNode[10];</p><p>  /*******組件之

84、間的分隔欄******/</p><p>  JSplitPane leftRightSplitPane;</p><p>  JSplitPane lineNoConsoleSplitPane;</p><p>  JSplitPane treeFlashSplitPane;</p><p>  JSplitPane tabbedLineN

85、oSplitPane;</p><p>  /**********文件選擇、存儲(chǔ)相關(guān)********/</p><p><b>  //文件過濾器</b></p><p>  Filter fileFilter = new Filter();</p><p><b>  //文件選擇器</b><

86、;/p><p>  FileChooser fileChooser = new FileChooser();</p><p>  // 文件讀寫控制,0表示文件選擇器讀文件,1文件選擇器標(biāo)示寫文件</p><p>  int fileChooser_control = 0;</p><p>  FileWriter fileWriter;<

87、/p><p>  // tabbedPane中tab頁(yè)的當(dāng)前數(shù)量</p><p>  int tb = 1;</p><p>  int find_control = 0;</p><p>  //文本域的控制器,指向當(dāng)前操作的文本域</p><p>  int textAreas_control = 0;</p&g

88、t;<p>  //當(dāng)前文本域中的文本</p><p>  String currentTextInTextArea;</p><p>  //標(biāo)志文件是否為新建的,如果是新建的文件,為true</p><p>  boolean[] newFileFlags = new boolean[10];</p><p>  //存放打

89、開文件所在的目錄</p><p>  String[] directory = new String[10];</p><p>  /********查找替換相關(guān)****/</p><p>  //正在查找的字符串及其長(zhǎng)度</p><p>  String findWord;</p><p>  int fingWor

90、dLength;</p><p>  //保存正在查找的字符串在文本域中的文本的位置</p><p>  int findIndex;</p><p>  //被替換的文本的長(zhǎng)度</p><p>  int replaceLength = 0;</p><p>  /********用于顯示Flash的控制器****/

91、</p><p>  JLabel flashLabel = new JLabel(new ImageIcon(loadImage("image/Juggler0.gif")));</p><p>  Timer timer = new Timer(100, new Act_timer());</p><p>  int timerControl

92、 = 0;</p><p>  /********幫助相關(guān)****/</p><p>  Font font = new Font("Courier", Font.TRUETYPE_FONT, 14);</p><p>  JTextArea helpTextArea = new JTextArea();</p><p>

93、  JFrame helpFrame = new JFrame("Help");</p><p><b>  //構(gòu)造函數(shù)</b></p><p>  public Editor() {</p><p>  super("文本編輯器");</p><p>  //為窗體添加鍵盤事件

94、處理器</p><p>  //下面這一行非常重要,表示窗體能夠接受焦點(diǎn)。</p><p>  //如果沒有這一句,按鍵盤會(huì)無效。</p><p>  this.setFocusable(true);</p><p>  this.addKeyListener(new MyKeyListener());</p><p>

95、;  //為窗體添加窗口事件處理器</p><p>  this.addWindowListener(new WindowListener());</p><p><b>  //初始化</b></p><p><b>  init();</b></p><p>  setLocation(200,

96、 200);</p><p>  setVisible(true);</p><p><b>  pack();</b></p><p><b>  //初始時(shí)啟動(dòng)動(dòng)畫</b></p><p>  timer.start();</p><p><b>  }<

97、/b></p><p>  該類是編輯器的主類。</p><p>  init方法初始化編輯器上的所有控件。首先初始化10個(gè)文本域,表示該編輯器能同時(shí)編輯10個(gè)文件,并構(gòu)建10個(gè)默認(rèn)的樹節(jié)點(diǎn)DefaultMutableTreeNode對(duì)象。初始化界面左邊的JTree,設(shè)置它的根節(jié)點(diǎn)為“正在編輯的文件”,使用DefaultMutableTreeNode的add方法為根節(jié)點(diǎn)添加一個(gè)子節(jié)點(diǎn)

98、,表示編輯器初始狀態(tài)時(shí)時(shí)新建一個(gè)文件。JTree的setEditable方法設(shè)置樹不可編輯。</p><p>  初始化控制臺(tái)的文本域consoleTextArea,用于輸出編譯和運(yùn)行Java的信息。將控制臺(tái)文本域放置在一個(gè)JScrollPane內(nèi),使得他具有滾動(dòng)條。</p><p>  初始化顯示當(dāng)前光標(biāo)所在行數(shù)的文本域showLineNoTextArea,當(dāng)用戶移動(dòng)編輯器的光標(biāo)時(shí),在該

99、文本域中顯示光標(biāo)行數(shù)會(huì)跟著發(fā)生變化。通過setEnabled方法使得它不可編輯。</p><p>  初始化菜單,包括如下幾個(gè)菜單:“File”,“Option”,“Advance”,“Help”,“Edit”。每個(gè)菜單下都設(shè)置多個(gè)菜單項(xiàng)。</p><p>  初始化工具欄,包括如下幾個(gè)工具項(xiàng):“New”,“Open”,“Save”,“Exit”,“Help”,“Complie”,“Bui

100、ld”,“Copy”,“Cut”,“Paste”。通過JButton的setToolTipText方法為工具項(xiàng)設(shè)置提示信息,當(dāng)用戶鼠標(biāo)停留在按鈕上時(shí),顯示提示信息。</p><p>  將各大組件用JSplitPane組織起來,使得組件之間的大小可以任意的調(diào)節(jié)。最后把這些組件都放在窗口中。</p><p>  initHelp方法初始化幫助信息。以表格的形式顯示編輯器的快捷鍵信息,使用了J

101、Table類實(shí)現(xiàn)表格,表格的列名是一個(gè)字符串?dāng)?shù)組,表格的數(shù)據(jù)是一個(gè)二維數(shù)組。helpTextArea文本域顯示使用編輯器全部功能需要做的配置。</p><p>  exitEdior方法退出編輯器。退出前通過JOptionPane的showXonfirmDialog方法彈出“確認(rèn)退出”的對(duì)話框,當(dāng)用戶選擇JOptionPane.YES_OPTION時(shí)才真正退出。</p><p>  loa

102、dImage方法加載圖片。根據(jù)圖片名,使用Class的getResource方法獲得圖片的URL,通過getContent方法打開URL,獲得圖片的輸入流,通過組件的createImage方法,把輸入流構(gòu)造成一個(gè)Image對(duì)象。</p><p>  (2) MyKeyListener類</p><p><b>  * 鍵盤事件處理器</b></p>&

103、lt;p><b>  */</b></p><p>  public class MyKeyListener extends KeyAdapter {</p><p>  // 覆蓋父類的keyPressed方法,處理鍵被按下時(shí)的事件。</p><p>  public void keyPressed(KeyEvent e) {</

104、p><p>  // 按F12打開文件</p><p>  if (e.getKeyCode() == KeyEvent.VK_F12){</p><p>  (new Act_OpenFile()).actionPerformed(null);</p><p><b>  }</b></p><p>

105、;  // 按Ctrl加S鍵保存文件</p><p>  else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S){</p><p>  (new Act_SaveFile()).actionPerformed(null);</p><p><b>  }</b>

106、;</p><p>  // 按Alt鍵查找</p><p>  else if (e.isAltDown()){</p><p>  (new Act_Find()).actionPerformed(null);</p><p><b>  }</b></p><p>  // 按F3查找下一個(gè)

107、</p><p>  else if (e.getKeyCode() == KeyEvent.VK_F3){</p><p>  (new Act_FindNext()).actionPerformed(null);</p><p><b>  }</b></p><p><b>  // 按F4替換</

108、b></p><p>  else if (e.getKeyCode() == KeyEvent.VK_F4){</p><p>  (new Act_Replace()).actionPerformed(null);</p><p><b>  }</b></p><p>  // 按Ctrl加N新建文件<

109、/p><p>  else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_N){</p><p>  (new Act_NewFile()).actionPerformed(null);</p><p><b>  }</b></p><p> 

110、 // 按Ctrl加E退出編輯器</p><p>  else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_E){</p><p>  (new Act_ExitEditor()).actionPerformed(null);</p><p><b>  }</b>

111、;</p><p>  // 按F5運(yùn)行Java程序</p><p>  else if (e.getKeyCode() == KeyEvent.VK_F5){</p><p>  (new Act_Build()).actionPerformed(null);</p><p><b>  }</b></p>

112、<p>  // 按F9編譯Java源代碼</p><p>  else if (e.getKeyCode() == KeyEvent.VK_F9){</p><p>  (new Act_Compile()).actionPerformed(null);</p><p><b>  }</b></p><p&

113、gt;  // 按Ctrl加H顯示幫助</p><p>  else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_H){</p><p>  (new Act_Help()).actionPerformed(null);</p><p><b>  }</b>&l

114、t;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /**</b></p><p>  該類用于處理鍵盤事件,繼承KeyAdpter。</p><p>  覆蓋了KeyAdapter的keyPress

115、ed方法,處理鍵盤被按下的事件,參數(shù)為KeyEvent類型。通過KeyEvent的getKeyCode方法獲得被按下鍵盤的碼,isControlDown方法判斷Ctrl鍵是否被按下,isAltDown方法判斷Alt鍵是否被按下。根據(jù)不同的按鍵組合,調(diào)用不同的方法去處理。</p><p>  (3) FileChoose類</p><p><b>  /**</b>&

溫馨提示

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

評(píng)論

0/150

提交評(píng)論