版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
.-importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.GridLayout;感謝閱讀importjava.awt.event.ActionEvent;感謝閱讀importjava.awt.event.ActionListener;謝謝閱讀importjavax.swing.JButton;精品文檔放心下載importjavax.swing.JFrame;謝謝閱讀importjavax.swing.JPanel;精品文檔放心下載importjavax.swing.JTextField;精品文檔放心下載/**一個計算器,與Windows附件自帶計算器的標準版功能、界面相仿。但還不支持鍵盤操作。感謝閱讀*/publicclassCalculatorextendsJFrameimplementsActionListener{精品文檔放心下載/**計算器上的鍵的顯示名字*/privatefinalString[]KEYS={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};謝謝閱讀/**計算器上的功能鍵的顯示名字*/privatefinalString[]COMMAND={"Backspace","CE","C"};/**計算器左邊的M的顯示名字*/感謝閱讀privatefinalString[]M={"","MC","MR","MS","M+"};精品文檔放心下載/**計算器上鍵的按鈕*/privateJButtonkeys[]=newJButton[KEYS.length];感謝閱讀/**計算器上的功能鍵的按鈕*/privateJButtoncommands[]=newJButton[COMMAND.length];/**計算器左邊的M的按鈕*/謝謝閱讀privateJButtonm[]=newJButton[M.length];謝謝閱讀/**計算結(jié)果文本框*/privateJTextFieldresultText=newJTextField("0");謝謝閱讀標志用戶按的是否是整個表達式的第一個數(shù)字,或者是運算符后的第一個數(shù)字privatebooleanfirstDigit=true;精品文檔放心下載計算的中間結(jié)果。privatedoubleresultNum=0.0;精品文檔放心下載當前運算的運算符privateStringoperator="=";謝謝閱讀操作是否合法privatebooleanoperateValidFlag=true;精品文檔放心下載/**構(gòu)造函數(shù)*/.-publicCalculator(){super();初始化計算器init();設置計算器的背景顏色this.setBackground(Color.LIGHT_GRAY);精品文檔放心下載this.setTitle("計算器");在屏幕(500,300)坐標處顯示計算器this.setLocation(500,300);謝謝閱讀不許修改計算器的大小this.setResizable(false);精品文檔放心下載使計算器中各組件大小合適this.pack();}/**初始化計算器*/privatevoidinit(){文本框中的內(nèi)容采用右對齊方式resultText.setHorizontalAlignment(JTextField.RIGHT);感謝閱讀不允許修改結(jié)果文本框resultText.setEditable(false);感謝閱讀設置文本框背景顏色為白色resultText.setBackground(Color.white);感謝閱讀初始化計算器上鍵的按鈕,將鍵放在一個畫板內(nèi)JPanelcalckeysPanel=newJPanel();謝謝閱讀用網(wǎng)格布局器,4行,5列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素精品文檔放心下載calckeysPanel.setLayout(newGridLayout(4,5,3,3));for(inti=0;i<KEYS.length;i++){謝謝閱讀keys[i]=newJButton(KEYS[i]);精品文檔放心下載calckeysPanel.add(keys[i]);感謝閱讀keys[i].setForeground(Color.blue);謝謝閱讀}運算符鍵用紅色標示,其他鍵用藍色表示keys[3].setForeground(Color.red);keys[8].setForeground(Color.red);keys[13].setForeground(Color.red);keys[18].setForeground(Color.red);keys[19].setForeground(Color.red);精品文檔放心下載初始化功能鍵,都用紅色標示。將功能鍵放在一個畫板內(nèi).-JPanelcommandsPanel=newJPanel();謝謝閱讀用網(wǎng)格布局器,1行,3列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素謝謝閱讀commandsPanel.setLayout(newGridLayout(1,3,3,3));for(inti=0;i<COMMAND.length;i++){精品文檔放心下載commands[i]=newJButton(COMMAND[i]);謝謝閱讀commandsPanel.add(commands[i]);感謝閱讀commands[i].setForeground(Color.red);感謝閱讀}初始化M鍵,用紅色標示,將M鍵放在一個畫板內(nèi)感謝閱讀JPanelcalmsPanel=newJPanel();謝謝閱讀用網(wǎng)格布局管理器,5行,1列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素謝謝閱讀calmsPanel.setLayout(newGridLayout(5,1,3,3));for(inti=0;i<M.length;i++){感謝閱讀m[i]=newJButton(M[i]);calmsPanel.add(m[i]);m[i].setForeground(Color.red);精品文檔放心下載}下面進行計算器的整體布局,將calckeys和command畫板放在計算器的中謝謝閱讀部,將文本框放在北部,將calms畫板放在計算器的西部。謝謝閱讀新建一個大的畫板,將上面建立的command和calckeys畫板放在該畫板內(nèi)謝謝閱讀JPanelpanel1=newJPanel();精品文檔放心下載畫板采用邊界布局管理器,畫板里組件之間的水平和垂直方向上間隔都為3謝謝閱讀象素panel1.setLayout(newBorderLayout(3,3));精品文檔放心下載panel1.add("North",commandsPanel);感謝閱讀panel1.add("West",calckeysPanel);精品文檔放心下載建立一個畫板放文本框JPaneltop=newJPanel();top.setLayout(newBorderLayout());top.add("Center",resultText);感謝閱讀整體布局getContentPane().setLayout(newBorderLayout(3,5));感謝閱讀getContentPane().add("North",top);精品文檔放心下載getContentPane().add("Center",panel1);感謝閱讀getContentPane().add("West",calmsPanel);精品文檔放心下載為各按鈕添加事件偵聽器.-//都使用同一個事件偵聽器,即本對象。本類的聲明中有 implements精品文檔放心下載ActionListenerfor(inti=0;i<KEYS.length;i++){精品文檔放心下載keys[i].addActionListener(this);感謝閱讀}for(inti=0;i<COMMAND.length;i++){精品文檔放心下載commands[i].addActionListener(this);謝謝閱讀}for(inti=0;i<M.length;i++){感謝閱讀m[i].addActionListener(this);感謝閱讀}}/**處理事件*/publicvoidactionPerformed(ActionEvente){感謝閱讀獲取事件源的標簽Stringlabel=e.getActionCommand();謝謝閱讀if(label.equals(COMMAND[0])){感謝閱讀用戶按了"Backspace"鍵handleBackspace();感謝閱讀}elseif(label.equals(COMMAND[1])){精品文檔放心下載用戶按了"CE"鍵resultText.setText("0");感謝閱讀}elseif(label.equals(COMMAND[2])){感謝閱讀用戶按了"C"鍵handleC();}elseif("0123456789.".indexOf(label)>=0){謝謝閱讀用戶按了數(shù)字鍵或者小數(shù)點鍵handleNumber(label);精品文檔放心下載handlezero(zero);}else{用戶按了運算符鍵handleOperator(label);感謝閱讀}}/**處理Backspace鍵被按下的事件*/privatevoidhandleBackspace(){精品文檔放心下載Stringtext=resultText.getText();感謝閱讀inti=text.length();.-if(i>0){退格,將文本最后一個字符去掉text=text.substring(0,i-1);謝謝閱讀if(text.length()==0){如果文本沒有了內(nèi)容,則初始化計算器的各種值resultText.setText("0");謝謝閱讀firstDigit=true;operator="=";謝謝閱讀}else{顯示新的文本resultText.setText(text);}}}/**處理數(shù)字鍵被按下的事件@paramkey*/privatevoidhandleNumber(Stringkey){謝謝閱讀if(firstDigit){輸入的第一個數(shù)字resultText.setText(key);精品文檔放心下載}elseif((key.equals("."))&&(resultText.getText().indexOf(".")<0)){精品文檔放心下載輸入的是小數(shù)點,并且之前沒有小數(shù)點,則將小數(shù)點附在結(jié)果文本框謝謝閱讀的后面resultText.setText(resultText.getText()+".");謝謝閱讀}elseif(!key.equals(".")){精品文檔放心下載如果輸入的不是小數(shù)點,則將數(shù)字附在結(jié)果文本框的后面resultText.setText(resultText.getText()+key);精品文檔放心下載}以后輸入的肯定不是第一個數(shù)字了firstDigit=false;感謝閱讀}/**處理C鍵被按下的事件*/privatevoidhandleC(){初始化計算器的各種值resultText.setText("0");firstDigit=true;operator="=";感謝閱讀.-}/**處理運算符鍵被按下的事件@paramkey*/privatevoidhandleOperator(Stringkey){謝謝閱讀if(operator.equals("/")){精品文檔放心下載除法運算如果當前結(jié)果文本框中的值等于0if(getNumberFromText()==0.0){精品文檔放心下載操作不合法operateValidFlag=false;resultText.setText("除數(shù)不能為零");精品文檔放心下載}else{resultNum/=getNumberFromText();謝謝閱讀}}elseif(operator.equals("1/x")){謝謝閱讀倒數(shù)運算if(resultNum==0.0){操作不合法operateValidFlag=false;resultText.setText("零沒有倒數(shù)");精品文檔放心下載}else{resultNum=1/resultNum;精品文檔放心下載}}elseif(operator.equals("+")){感謝閱讀加法運算resultNum+=getNumberFromText();感謝閱讀}elseif(operator.equals("-")){感謝閱讀減法運算resultNum-=getNumberFromText();精品文檔放心下載}elseif(operator.equals("*")){感謝閱讀乘法運算resultNum*=getNumberFromText();感謝閱讀}elseif(operator.equals("sqrt")){謝謝閱讀平方根運算resultNum=Math.sqrt(resultNum);謝謝閱讀}elseif(operator.equals("%")){感謝閱讀百分號運算,除以100resultNum=resultNum/100;謝謝閱讀}elseif(operator.equals("+/-")){精品文檔放心下載正數(shù)負數(shù)運算.-resultNum=resultNum*(-1);感謝閱讀}elseif(operator.equals("=")){謝謝閱讀賦值運算resultNum=getNumberFromText();感謝閱讀}if(oper
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河北建筑安全員-A證考試題庫附答案
- DB32T-食品安全督導工作規(guī)范編制說明
- 三個共點力的動態(tài)平衡
- 單位人力資源管理制度精彩大合集十篇
- 公用事業(yè)行業(yè)十二月行業(yè)動態(tài)報告:水電發(fā)電量降幅收窄風光核裝機目標明確
- 江蘇省連云港市海州區(qū)2024-2025學年八年級上學期期末考試生物學試卷(含答案)
- 單位管理制度展示合集【職員管理篇】十篇
- 年產(chǎn)5000臺液晶電視項目可行性研究報告建議書
- 單位管理制度展示選集人力資源管理篇
- 單位管理制度品讀選集人員管理篇十篇
- 機動車維修竣工出廠合格證
- 陜西延長石油精原煤化工有限公司 60 萬噸 - 年蘭炭綜合利用項目 ( 一期 30 萬噸 - 年蘭炭、1 萬噸 - 年金屬鎂生產(chǎn)線)竣工環(huán)境保護驗收調(diào)查報告
- 大病救助申請書
- 法學概論-課件
- 廈門物業(yè)管理若干規(guī)定
- 外科護理學試題+答案
- 齊魯醫(yī)學屈光和屈光不正匯編
- 貨架的技術說明(一)
- 【高等數(shù)學練習題】皖西學院專升本自考真題匯總(附答案解析)
- 高處作業(yè)安全技術交底-
- 工抵房協(xié)議模板
評論
0/150
提交評論