用源碼論述Eclipse學(xué)習(xí)體會(huì)_第1頁(yè)
用源碼論述Eclipse學(xué)習(xí)體會(huì)_第2頁(yè)
用源碼論述Eclipse學(xué)習(xí)體會(huì)_第3頁(yè)
用源碼論述Eclipse學(xué)習(xí)體會(huì)_第4頁(yè)
用源碼論述Eclipse學(xué)習(xí)體會(huì)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課 程 論 文課程名稱 軟件開(kāi)發(fā)工具 論文題目 用源碼論述Eclipse學(xué)習(xí)體會(huì) 學(xué)生專業(yè) 學(xué)生班級(jí) 學(xué)生學(xué)號(hào) 學(xué)生姓名 任課老師 用源碼論述Eclipse學(xué)習(xí)體會(huì)摘要:在java程序開(kāi)發(fā)上,Eclipse所能給編譯java程序帶來(lái)了許多的方便。通過(guò)一段時(shí)間的學(xué)習(xí),對(duì)此開(kāi)發(fā)軟件有了更加深入更加系統(tǒng)的了解。同時(shí)我們通過(guò)Eclipse集成開(kāi)發(fā)平臺(tái)也做了許多次實(shí)驗(yàn),特別是在我使用java語(yǔ)言設(shè)計(jì)計(jì)算器程序,給了我?guī)?lái)很多關(guān)于Eclipse方面的學(xué)習(xí)體會(huì),以此系統(tǒng)的把對(duì)Eclipse開(kāi)發(fā)工具的使用與源碼相結(jié)合做一個(gè)全面的總結(jié),找出操作過(guò)程中的存在的不足,不斷完善自己在編程和使用開(kāi)發(fā)工具方面的能力,提高

2、個(gè)人的綜合實(shí)力水平。關(guān)鍵字:Eclipse Java 計(jì)算器 正文: Eclipse簡(jiǎn)介:(1)Eclipse體系結(jié)構(gòu)Eclipse是一種通用工具平臺(tái)-一普遍適用的開(kāi)放式擴(kuò)展IDE。它提供了功能豐富的開(kāi)發(fā)環(huán)境,允許開(kāi)發(fā)者高效地創(chuàng)建一些能夠無(wú)縫集成到Eclipse平臺(tái)中的工具 Eclipse的設(shè)計(jì)思想是:一切皆為插件!Eclipse的核心是非常小的,其它的所有功能都是以插件的形式附加在這個(gè)核心之上。這樣的功能插件包括它的圖形API(SWT/JFace)、Java開(kāi)發(fā)環(huán)境插件(JDT)、插件開(kāi)發(fā)環(huán)境(PDE)等。Eclipse對(duì)這些插件的協(xié)同工作提供了良好的支持,不僅安裝簡(jiǎn)單,而且還可以無(wú)縫結(jié)合。

3、 Eclipse加載插件有靜態(tài)和動(dòng)態(tài)之分。所謂靜態(tài)就是Eclipse啟動(dòng)時(shí)就加載,例如JDT、PDE等插件;所謂動(dòng)態(tài)加載,就是Eclipse啟動(dòng)完成后,如果有事件發(fā)生,Eclipse會(huì)根據(jù)事件的ID的不同,自動(dòng)加載對(duì)應(yīng)的插件。當(dāng)插件不再被使用時(shí),它就會(huì)被在適當(dāng)?shù)臅r(shí)候清除出內(nèi)存,因此即使裝了一大堆插件里,也不必拍心某些不常用的插件白白占著內(nèi)存。(2) 圖形API Eclipse界面非常像亮,如果不事先告之.僅從界面上是活不出任何Java程序的影子。Java的標(biāo)推圖形API:AWT/Swing直是被人垢病的。用它寫成的界面不夠美觀,界面響應(yīng)速度還慢。Eclipse的SWT/JFace圖形API徹底

4、地改變了這一狀況。主要原因是SWT/JFace與AWT/Swing在實(shí)現(xiàn)上有很大不同:后者是模擬本機(jī)窗口組件,而前者則直接調(diào)用本機(jī)窗口組件,當(dāng)本機(jī)投有所需組件時(shí)才進(jìn)行摸擬。 當(dāng)然SWT/JFace這種實(shí)現(xiàn)方祛也是有缺點(diǎn)的,它沒(méi)有Java的跨操作系統(tǒng)的特性,每一個(gè)操作系統(tǒng)要用Eclipse都需要移植一次SWT/JFace ,這也是SWT/JFace最具爭(zhēng)議的地方,不過(guò)因?yàn)镾WT/JFace己經(jīng)移植到了幾個(gè)主流的操作系統(tǒng)平臺(tái),所以這已經(jīng)不再是一個(gè)什么嚴(yán)重的問(wèn)題了。(3) 開(kāi)放式、可擴(kuò)展的IDEEclipse有極為強(qiáng)大的集成開(kāi)發(fā)環(huán)境,它集成了CVS、Junit和Ant,強(qiáng)大的代碼重構(gòu)功能傲視群雄。因

5、為Eclipse的安裝包集成了Java開(kāi)發(fā)環(huán)境的插件JDT。所以Eclipse默認(rèn)是一個(gè)和Jbuilder類似的Java開(kāi)發(fā)工具。但Eclipse不僅僅只是Java的開(kāi)發(fā)工具,我們只需安裝一個(gè)C/C+插件,就可以把它當(dāng)成C/C+開(kāi)發(fā)工具。只要有相應(yīng)的插件,Eclipse也可以用做其它語(yǔ)言的開(kāi)發(fā)工具。 Eclipse抽件擴(kuò)展機(jī)制是其最突出的特點(diǎn)和優(yōu)勢(shì),它使Eclipse提升到了一個(gè)平臺(tái)的高度。我們可以利用Eclispe的插件開(kāi)發(fā)環(huán)境(PDE)來(lái)開(kāi)發(fā)自己的Eclispe插件,隨己所需地?cái)U(kuò)展Eclipse的功能。這樣的插件形式是多種多樣的,它可以是一種編程工具,如C/C+,JSP,PHP等;也可以是

6、一個(gè)應(yīng)用系統(tǒng),如信息管理系統(tǒng)。Eclispe的插件機(jī)制使得Eclipse具有無(wú)限擴(kuò)展的可能,插你想插的一切! Eclipse插件平臺(tái)(4)Eclipse的總結(jié)Eclipse集成開(kāi)發(fā)平臺(tái)的強(qiáng)大,使其收到許多開(kāi)發(fā)人員的青睞。我們知道此集成開(kāi)發(fā)平臺(tái)的目標(biāo)不僅僅限于開(kāi)發(fā)java,因?yàn)樗试S構(gòu)建與Eclipse環(huán)境無(wú)縫集成工具。由于Eclipse中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所?;贓clipse開(kāi)發(fā)工具的使用,程序的圖形界面美觀和響應(yīng)速度快,能給開(kāi)發(fā)人員帶來(lái)的很大的福音,是 時(shí)代進(jìn)步的一個(gè)

7、小小步伐,同時(shí)就能給我們?cè)陂_(kāi)發(fā)軟件方面帶來(lái)了美感和提高開(kāi)發(fā)效率;在學(xué)習(xí)Eclipse軟件開(kāi)發(fā)工具的過(guò)程中,經(jīng)過(guò)我的多次實(shí)驗(yàn),終于在Eclipse開(kāi)發(fā)平臺(tái)上完成了一個(gè)簡(jiǎn)單的計(jì)算器java程序,這是我一學(xué)期的學(xué)習(xí)成果,也是我的實(shí)踐成果。此計(jì)算器具有功能為:加、減、乘、除、階乘、倒數(shù)、平方根計(jì)算功能以及清除計(jì)算值的功能,還添加了M鍵的功能。設(shè)計(jì)過(guò)程u 需要引進(jìn)的類:awt圖形編程中: /區(qū)域布局 /提供顏色空間 /以矩陣網(wǎng)格形式布局swing界面組件中 /按鈕 /窗體 /面板容器 /文本框接著定義計(jì)算器上的按鍵功能顯示符號(hào)。用數(shù)組KEYS來(lái)存放符號(hào)鍵,數(shù)組COMMAND存刪除鍵、初始化、清除鍵符號(hào):

8、Backspace,CE, C;以及創(chuàng)建文本框?qū)ο髍esultText,分別給它們創(chuàng)建按鈕,同時(shí)還需要定義一些在計(jì)算過(guò)程中要做出的判斷條件,代碼如下:private static final long serialVersionUID /* 計(jì)算器上的鍵的顯示名字 */ private final String KEYS = "7", "8", "9", "/", "sqrt", "4", "5", "6", "*"

9、, "!", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" ; /* 計(jì)算器上的功能鍵的顯示名字 */ private final String COMMAND = "Backspace", "CE", "C" ; /* 計(jì)算器上鍵的按鈕 */ private

10、 JButton keys = new JButtonKEYS.length; /* 計(jì)算器上的功能鍵的按鈕 */ private JButton commands = new JButtonCOMMAND.length; /* 計(jì)算結(jié)果文本框 */ private JTextField resultText = new JTextField("0"); / 標(biāo)志用戶按的是否是整個(gè)表達(dá)式的第一個(gè)數(shù)字,或者是運(yùn)算符后的第一個(gè)數(shù)字 private boolean firstDigit = true; / 計(jì)算的中間結(jié)果。 private double resultNum = 0

11、.0; / 當(dāng)前運(yùn)算的運(yùn)算符 private String operator = "=" / 操作是否合法 private boolean operateValidFlag = true;u 然后就應(yīng)該開(kāi)始構(gòu)建函數(shù),設(shè)置計(jì)算器界面。構(gòu)建初始化函數(shù),定義好計(jì)算器名稱,顯示位置,背景等屬性,構(gòu)建計(jì)算器按鍵的容器,利用網(wǎng)格布局器的排版,把功能鍵符號(hào)分別放到合適位置。接下來(lái),要設(shè)定好計(jì)算器的顯示格式。1. 文本框的設(shè)置:文本框是用于顯示輸入或輸出數(shù)字。設(shè)置好文本框內(nèi)數(shù)字的對(duì)齊方式,背景為白色,使用戶結(jié)果時(shí)能清楚明了。不許修改結(jié)果文本框。 resultText.setHorizont

12、alAlignment(JTextField.RIGHT); / 不允許修改結(jié)果文本框 resultText.setEditable(false); / 設(shè)置文本框背景顏色為白色 resultText.setBackground(Color.white);2. 基本鍵的設(shè)置:將鍵放在畫板內(nèi),用網(wǎng)格布局器排布,因?yàn)楣δ苕I共20個(gè),所以設(shè)置為4行5列的網(wǎng)格形式。按鍵的前景顏色統(tǒng)一為白色,背景為黑色。此部分如下圖:JPanel calckeysPanel = new JPanel(); / 用網(wǎng)格布局器,4行,5列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個(gè)象素,垂直方向間隔為3個(gè)象素 calckeysPa

13、nel.setLayout(new GridLayout(4, 5, 3, 3); for (int i = 0; i < KEYS.length; i+) keysi = new JButton(KEYSi); calckeysPanel.add(keysi); keysi.setForeground(Color.white); keysi.setBackground(Color.black); / 運(yùn)算符鍵用紅色標(biāo)示,其他鍵用藍(lán)色表示 keys3.setForeground(Color.white); keys8.setForeground(Color.white); keys13.

14、setForeground(Color.white); keys18.setForeground(Color.white); keys19.setForeground(Color.white); / 初始化功能鍵,都用紅色標(biāo)示。將功能鍵放在一個(gè)畫板內(nèi) JPanel commandsPanel = new JPanel(); / 用網(wǎng)格布局器,1行,3列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個(gè)象素,垂直方向間隔為3個(gè)象素 commandsPanel.setLayout(new GridLayout(1, 3, 3, 3); for (int i = 0; i < COMMAND.length;

15、 i+) commandsi = new JButton(COMMANDi); commandsPanel.add(commandsi); commandsi.setForeground(Color.white); commandsi.setBackground(Color.black); u 在設(shè)置好界面后,就開(kāi)始處理各個(gè)按鍵的事件處理。(1)Backspace鍵:刪除或叫退格,將目前文本框內(nèi)的最后一個(gè)字符去掉;如果文本框只有一個(gè)數(shù)字,則將它改成0;如果文本框內(nèi)沒(méi)有內(nèi)容,則初始化計(jì)算器的各種值。(2)數(shù)字鍵和小數(shù)點(diǎn):如果輸入的是小數(shù)點(diǎn),而且之前沒(méi)有小數(shù)點(diǎn),則將小數(shù)點(diǎn)附在當(dāng)前文本框結(jié)果的后面;

16、如果輸入的是數(shù)字,則將數(shù)字附在當(dāng)前文本框結(jié)果后面。(3)C鍵:將初始化計(jì)算器的各種值。(4)運(yùn)算符鍵:如果是除法,則當(dāng)除數(shù)為0時(shí)提示錯(cuò)誤信息“除數(shù)不能為0”;如果是倒數(shù),當(dāng)結(jié)果文本框?yàn)?時(shí),也應(yīng)提示錯(cuò)誤信息“零沒(méi)有倒數(shù)”;如果是百分號(hào)運(yùn)算,則將結(jié)果文本框除以100,得到答案;如果是正負(fù)號(hào)運(yùn)算,則將結(jié)果文本框乘以-1,得到答案。也應(yīng)當(dāng)注意雙精度浮點(diǎn)數(shù)的運(yùn)算。u 在處理好按鍵的各種功能后,就應(yīng)該處理從結(jié)果文本框中獲取數(shù)字。u 最后,寫出程序的主函數(shù),設(shè)置程序的開(kāi)始運(yùn)行。程序運(yùn)行截圖:1. 初始化界面:2. 當(dāng)0為除數(shù)時(shí):3. 計(jì)算0的倒數(shù):4. 階乘?。?. 計(jì)算平方根:6. Backspace鍵

17、的使用:7. 四則運(yùn)算(以加法為例:4+5): 心得體會(huì): 雖然以前多多少少接觸過(guò)Eclipse這個(gè)開(kāi)發(fā)工具,但是我并不了解它。然而經(jīng)過(guò)一個(gè)學(xué)期軟件開(kāi)發(fā)工具的學(xué)習(xí),我對(duì)Eclipse有了更加的了解,系統(tǒng)的獲知了有關(guān)于Eclipse開(kāi)發(fā)工具的知識(shí),為我未來(lái)的開(kāi)發(fā)又添加了一些技能基礎(chǔ)。要想打勝仗,不僅僅需要有一個(gè)好武器,還需要使用好武器的技能,否則武器就會(huì)成為一塊廢鐵;開(kāi)發(fā)程序也不例外,有如Eclipse這樣的優(yōu)秀開(kāi)發(fā)平臺(tái),僅僅有它不行,還必須學(xué)會(huì)如何使用它,如何快捷,高效的使用它,才是我們要追求的目標(biāo)。當(dāng)我接觸到軟件開(kāi)發(fā)工具這門課時(shí),我很是激動(dòng),因?yàn)閷?duì)于開(kāi)發(fā)程序來(lái)說(shuō),開(kāi)發(fā)工具就像是一把利劍,有了

18、利劍才會(huì)讓我們的軟實(shí)力綻放出來(lái)。倘若你的編程能很好,但你卻對(duì)于使用開(kāi)發(fā)工具一竅不通,那么你在開(kāi)發(fā)的過(guò)程中就會(huì)遇到很多的麻煩,速度也會(huì)很慢,效率很低,這些簡(jiǎn)直是浪費(fèi)生命的行為。所以學(xué)好一些必要的軟件開(kāi)發(fā)工具是很有必要的。在接下來(lái)的學(xué)習(xí)中,我學(xué)到了Eclipse的環(huán)境、平臺(tái)體系結(jié)構(gòu)和Eclipse 集成開(kāi)發(fā)環(huán)境,及在Eclipse中如何進(jìn)行java開(kāi)發(fā),詳細(xì)講述Java代碼的編寫及Java代碼的編譯和調(diào)試;并經(jīng)過(guò)第一次的上機(jī)實(shí)驗(yàn)我掌握了實(shí)際運(yùn)用Eclipse環(huán)境來(lái)進(jìn)行java編程。另外我也學(xué)習(xí)到了單元測(cè)試的方法和步驟以及TDD(軟件驅(qū)動(dòng)開(kāi)發(fā))和SWT程序開(kāi)發(fā),最后還了解到了MYSQL及建模工具的一

19、些知識(shí)。另外通過(guò)課堂外的五次上機(jī)實(shí)驗(yàn)實(shí)際操作了在Eclipse環(huán)境下的一些關(guān)于java編程以及調(diào)試的相關(guān)過(guò)程加深了我對(duì)Eclipse的學(xué)習(xí)。在這門課程外,通過(guò)另外一門Java程序設(shè)計(jì)與實(shí)踐教程的學(xué)習(xí),使我對(duì)使用java編程知識(shí)有了一定的基礎(chǔ)知識(shí)掌握,讓我更好的來(lái)學(xué)習(xí)計(jì)算機(jī)軟件工具,更容易理解其中的知識(shí),同時(shí)通過(guò)這門課程的學(xué)習(xí)我也知道了java的重要性。在學(xué)完這門課后,我利用Eclipse平臺(tái)完成了一個(gè)簡(jiǎn)單計(jì)算器,設(shè)計(jì)開(kāi)發(fā)計(jì)算器的過(guò)程,我學(xué)會(huì)在Eclipse環(huán)境下調(diào)試并運(yùn)行,在不會(huì)的地方可以從書上、網(wǎng)上或者幫助文檔上面查找資料。也充分地意識(shí)到自己在java語(yǔ)言上知識(shí)量的不足與缺陷,充分意識(shí)到要想

20、充分展現(xiàn)自己的編程水平,最起碼最基本的就是要熟練運(yùn)用開(kāi)發(fā)平臺(tái)。同時(shí)在這些實(shí)踐中學(xué)會(huì)以及領(lǐng)悟了許多:Eclipse功能強(qiáng)大,但最重要的是學(xué)會(huì)并且熟練的使用Eclipse,因?yàn)檫@樣能提高我們工作是效率,節(jié)約時(shí)間;遇到錯(cuò)誤時(shí)千萬(wàn)不要輕易說(shuō)出放棄,因?yàn)闆](méi)有勞動(dòng)就不會(huì)有成果,往往在我們遇到問(wèn)題,解決問(wèn)題的時(shí)候才會(huì)讓我們學(xué)到知識(shí);再者就是要有耐心,開(kāi)發(fā)程序的過(guò)程是跟代碼打交道,很容易出現(xiàn)錯(cuò)誤?,F(xiàn)在我們正在學(xué)習(xí)階段,既然以選擇這樣一個(gè)充滿創(chuàng)造力與刺激的職位方向,那么我們應(yīng)該需要具有上面所說(shuō)的基本素質(zhì)。通過(guò)此次的編程學(xué)習(xí),使我對(duì)java語(yǔ)言和Elipse有了更深的認(rèn)識(shí)和了解,同時(shí)通過(guò)此次的編程我也認(rèn)識(shí)到自己所

21、存在的大量的不足,還需要更努力更進(jìn)一步的學(xué)習(xí)。在以后,我會(huì)慢慢了解Eclipse的強(qiáng)大功能,深入學(xué)習(xí),在編寫程序的能力上爭(zhēng)取不斷的提高。參考文獻(xiàn):1 Java核心編程技術(shù) 電子工業(yè)出版社 劉中兵Java研究室 編著2 Eclipse從入門到精通 清華大學(xué)出版社 強(qiáng)鋒科技 陳剛 編著3 精通Eclipse 清華大學(xué)出版社 張大治 應(yīng)群 編著4 Java程序設(shè)計(jì)與實(shí)踐教程清華大學(xué)出版社 王薇 董迎紅 編著程序源代碼:package test;import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;i

22、mport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;/*一個(gè)計(jì)算器,與Windows附件自帶計(jì)算器的標(biāo)準(zhǔn)版功能、界面相仿。 但還不支持鍵盤操作。*/public class Calculator extends JFrame implements ActionListener private

23、static final long serialVersionUID /* 計(jì)算器上的鍵的顯示名字 */ private final String KEYS = "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "!", "1", "2", "3", "-", "

24、1/x", "0", "+/-", ".", "+", "=" ; /* 計(jì)算器上的功能鍵的顯示名字 */ private final String COMMAND = "Backspace", "CE", "C" ; /* 計(jì)算器上鍵的按鈕 */ private JButton keys = new JButtonKEYS.length; /* 計(jì)算器上的功能鍵的按鈕 */ private JButton commands

25、= new JButtonCOMMAND.length; /* 計(jì)算結(jié)果文本框 */ private JTextField resultText = new JTextField("0"); / 標(biāo)志用戶按的是否是整個(gè)表達(dá)式的第一個(gè)數(shù)字,或者是運(yùn)算符后的第一個(gè)數(shù)字 private boolean firstDigit = true; / 計(jì)算的中間結(jié)果。 private double resultNum = 0.0; / 當(dāng)前運(yùn)算的運(yùn)算符 private String operator = "=" / 操作是否合法 private boolean ope

26、rateValidFlag = true; /*構(gòu)造函數(shù)*/ public Calculator() super(); / 初始化計(jì)算器 init(); / 設(shè)置計(jì)算器的背景顏色 this.setBackground(Color.LIGHT_GRAY); this.setTitle("計(jì)算器"); / 在屏幕(500, 300)坐標(biāo)處顯示計(jì)算器 this.setLocation(500, 300); / 不許修改計(jì)算器的大小 this.setResizable(false); / 使計(jì)算器中各組件大小合適 this.pack(); /*初始化計(jì)算器*/ private vo

27、id init() / 文本框中的內(nèi)容采用右對(duì)齊方式 resultText.setHorizontalAlignment(JTextField.RIGHT); / 不允許修改結(jié)果文本框 resultText.setEditable(false); / 設(shè)置文本框背景顏色為白色 resultText.setBackground(Color.white); / 初始化計(jì)算器上鍵的按鈕,將鍵放在一個(gè)畫板內(nèi) JPanel calckeysPanel = new JPanel(); / 用網(wǎng)格布局器,4行,5列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個(gè)象素,垂直方向間隔為3個(gè)象素 calckeysPanel.

28、setLayout(new GridLayout(4, 5, 3, 3); for (int i = 0; i < KEYS.length; i+) keysi = new JButton(KEYSi); calckeysPanel.add(keysi); keysi.setForeground(Color.white); keysi.setBackground(Color.black); / 運(yùn)算符鍵用紅色標(biāo)示,其他鍵用藍(lán)色表示 keys3.setForeground(Color.white); keys8.setForeground(Color.white); keys13.setF

29、oreground(Color.white); keys18.setForeground(Color.white); keys19.setForeground(Color.white); / 初始化功能鍵,都用紅色標(biāo)示。將功能鍵放在一個(gè)畫板內(nèi) JPanel commandsPanel = new JPanel(); / 用網(wǎng)格布局器,1行,3列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個(gè)象素,垂直方向間隔為3個(gè)象素 commandsPanel.setLayout(new GridLayout(1, 3, 3, 3); for (int i = 0; i < COMMAND.length; i+)

30、 commandsi = new JButton(COMMANDi); commandsPanel.add(commandsi); commandsi.setForeground(Color.white); commandsi.setBackground(Color.black); / 下面進(jìn)行計(jì)算器的整體布局,將calckeys和command畫板放在計(jì)算器的中部, / 將文本框放在北部,將calms畫板放在計(jì)算器的南部。 / 新建一個(gè)大的畫板,將上面建立的command和calckeys畫板放在該畫板內(nèi) JPanel panel1 = new JPanel(); / 畫板采用邊界布局管理器

31、,畫板里組件之間的水平和垂直方向上間隔都為3象素 panel1.setLayout(new BorderLayout(3, 3); panel1.add("North", commandsPanel); panel1.add("South", calckeysPanel); / 建立一個(gè)畫板放文本框 JPanel top = new JPanel(); top.setLayout(new BorderLayout(); top.add("Center", resultText); / 整體布局 getContentPane().set

32、Layout(new BorderLayout(3, 5); getContentPane().add("North", top); getContentPane().add("Center", panel1); / 為各按鈕添加事件偵聽(tīng)器 / 都使用同一個(gè)事件偵聽(tīng)器,即本對(duì)象。本類的聲明中有implements ActionListener for (int i = 0; i < KEYS.length; i+) keysi.addActionListener(this); for (int i = 0; i < COMMAND.lengt

33、h; i+) commandsi.addActionListener(this); /*處理事件*/ public void actionPerformed(ActionEvent e) / 獲取事件源的標(biāo)簽 String label = e.getActionCommand(); if (label.equals(COMMAND0) / 用戶按了"Backspace"鍵 handleBackspace(); else if (label.equals(COMMAND1) / 用戶按了"CE"鍵 resultText.setText("0&qu

34、ot;); else if (label.equals(COMMAND2) / 用戶按了"C"鍵 handleC(); else if ("0123456789.".indexOf(label) >= 0) / 用戶按了數(shù)字鍵或者小數(shù)點(diǎn)鍵 handleNumber(label); / handlezero(zero); else / 用戶按了運(yùn)算符鍵 handleOperator(label); /*處理Backspace鍵被按下的事件*/ private void handleBackspace() String text = resultTex

35、t.getText(); int i = text.length(); if (i > 0) / 退格,將文本最后一個(gè)字符去掉 text = text.substring(0, i - 1); if (text.length() = 0) / 如果文本沒(méi)有了內(nèi)容,則初始化計(jì)算器的各種值 resultText.setText("0"); firstDigit = true; operator = "=" else / 顯示新的文本 resultText.setText(text); /* * 處理數(shù)字鍵被按下的事件 * * param key */

36、private void handleNumber(String key) if (firstDigit) / 輸入的第一個(gè)數(shù)字 resultText.setText(key); else if (key.equals(".") && (resultText.getText().indexOf(".") < 0) / 輸入的是小數(shù)點(diǎn),并且之前沒(méi)有小數(shù)點(diǎn),則將小數(shù)點(diǎn)附在結(jié)果文本框的后面 resultText.setText(resultText.getText() + "."); else if (!key.equ

37、als(".") / 如果輸入的不是小數(shù)點(diǎn),則將數(shù)字附在結(jié)果文本框的后面 resultText.setText(resultText.getText() + key); / 以后輸入的肯定不是第一個(gè)數(shù)字了 firstDigit = false; /*處理C鍵被按下的事件*/ private void handleC() / 初始化計(jì)算器的各種值 resultText.setText("0"); firstDigit = true; operator = "=" /* * 處理運(yùn)算符鍵被按下的事件 * * param key */ pr

38、ivate void handleOperator(String key) if (operator.equals("/") / 除法運(yùn)算 / 如果當(dāng)前結(jié)果文本框中的值等于0 if (getNumberFromText() = 0.0) / 操作不合法 operateValidFlag = false; resultText.setText("0不能為除數(shù)"); else resultNum /= getNumberFromText(); else if (operator.equals("1/x") / 倒數(shù)運(yùn)算 if (resultNum = 0.0) / 操作不合法 operateValidFlag = false; resultText.setText("零沒(méi)有倒數(shù)");

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論