項目8 仿windows計算器運算實現_第1頁
項目8 仿windows計算器運算實現_第2頁
項目8 仿windows計算器運算實現_第3頁
項目8 仿windows計算器運算實現_第4頁
項目8 仿windows計算器運算實現_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目8仿windows計算器運算實現2了解Java事件響應機制掌握動作事件響應掌握窗口事件響應本章目標本章任務3實現計算器運算運算說明4在此計算器中,主要使用的數學運算有加、減、乘、除四則運算,或對一個正數進行開方,或對一個非0的數求倒數,使用到的數學符號有:加、減、乘、除,對應使用的符號是“+”、“-”、“*”、“/”。開方與倒數,對應的符號是“sqrt”和“1/x”求結果使用的數學符號是“=”%:第二個操作數就等于兩數相乘再除以100:①按數字A后再按乘號,再按另一個數字B,再按%,就是計算A的百分之B;②按數字A,再按加減除任意一個,再按另一個數字B,再按%,就是計算A加減除A的百分之B。如按50,按+,按10,按%,計算50+50*10%=55除了用于數學運算的符號,Windows計算器還提供對計算結果做存儲、讀取、累加、清除等操作,亦有對數字顯示框中的數字做退格操作,還可以清除上次計算結果或全部結果。使用符號“MC”、“MR”、“MS”、“M+”代表清除存儲結果、讀取存儲結果、保存存儲結果、累加存儲結果使用“Backspace”符號代表退格使用“CE”和“C”代表清除上次計算結果和清除所有計算結果。

1.事件事件是用戶對一個動作的啟動。常用的事件包括用戶單擊一個按鈕,在文本框內輸入及鼠標、鍵盤、窗口等的操作所謂的事件處理,是指當用戶觸發了某一個事件時,系統所做出的響應。Java采用的是委派事件模型的處理機制,也稱為授權事件模型。當用戶與組件進行交互,觸發了相應的事件時,組件本身并不直接處理事件,而是將事件的處理工作委派給事件監聽器。不同的事件,可以交由不同類型的監聽器去處理。52.委派事件模型6事件源是產生事件的組件,每個事件源可以產生一個或多個事件。例如,文本框JTextField獲得焦點時,按回車鍵則產生動作事件,而修改文本框內容時產生的則是文本事件。為了能夠響應所產生的事件,事件源必須注冊事件監聽器,以便讓事件監聽器能夠及時接收到事件源所產生的各類事件。當接收到一個事件時,監聽器會自動啟動并執行相關的事件處理代碼來處理該事件。3.常見用戶行為、事件源和事件類型7用戶行為事件源事件類名稱單擊按鈕JButtonActionEvent在文本域按下回車鍵JTextFieldActionEvent選定一個新項JComBoxItemEvent,ActionEvent選定(多)項JListListSelectionEvent單擊復選框JCheckBoxItemEvent,ActionEvent選定菜單項JMenuItemActionEvent移動滾動條JScrollBarAdjustmentEvent窗口打開、關閉、圖標(最小化、還原或正在關閉)JFrame等WindowEvent組件獲得或失去焦點ComponentFocusEvent釋放或按下鍵KeyEvent移動鼠標MouseEvent4.事件類、事件監聽器接口與事件處理者的關系8事件類名稱事件監聽器接口事件監聽器委派的事件處理者ActionEventActionListeneractionPerformed(ActionEvente)ItemEventItemListeneritemStateChanged(ItemEvente)FocuseEventFocusListenerfocusGained(FocusEvente)focusLost(FocusEvente)WindowEventWindowListenerwindowActivated(WindowEvente)windowClosed(WindowEvente)windowClosing(WindowEvente)windowDeactivated(WindowEvente)windowDeiconified(WindowEvente)windowIconified(WindowEvente)windowOpened(WindowEvente)5.動作事件ActionEvent(1)當用戶按下按鈕組件(JButton)、雙擊列表(JList)的選項、選擇菜單項(JMenuItem)或是在文本框(JTextField)文本區(JTextArea)輸入文字后按下回車鍵的同時,即觸發了動作事件示例:單擊不同的按鈕實現窗口背景色的改變95.動作事件ActionEvent(2)在這個示例中,我們想要在一個面板上添加三個按鈕將窗口本身設置為三個按鈕的監聽器。只要用戶單擊面板上的任何一個按鈕,監聽器對象就會接收到一個ActionEvent對象,它表示有個按鈕被單擊了。監聽器對象將改變面板的背景顏色。四個步驟:①添加組件,即三個按鈕到面板;②實現相關事件監聽器接口;③三個按鈕都注冊事件源的動作監聽器;④實現事件觸發時要進行的相關處理。105.動作事件ActionEvent(3)創建窗口,在內容窗格上添加一個中間面板,將三個按鈕添加到中間面板上115.動作事件ActionEvent(4)2.實現相關事件監聽器接口,ActionEvent事件的監聽器接口是ActionListener,我們直接讓ButtonListener窗口實現ActionListener接口125.動作事件ActionEvent(5)3.三個按鈕都注冊事件源的動作監聽器。ActionEvent對應的注冊事件監聽器方法為“組件名.addActionListener(ActionListenera)”。這里this表示當前類對象。因為是ButtonListener直接實現了ActionListener接口。135.動作事件ActionEvent(6)4.實現事件觸發時要進行的相關處理。這里的處理,即是單擊“紅色”按鈕,窗口背景色變成紅色,單擊“綠色”按鈕,窗口背景色變成綠色,單擊“黃色”按鈕,窗口背景色變成黃色。ActionListener接口有一個actionPerformed()方法,也就是事件監聽器委派的事件處理者。我們在actionPerformed()方法里添加事件處理代碼。先判斷單擊的是哪個按鈕,再進行相應的背景色著色。146.窗口事件(1)窗口事件是發生在窗口對象上的事件。當用戶或應用程序在打開、關閉、最大或最小化窗口等時觸發WindowEvent事件。處理WindowEvent事件需要實現WindowListener接口,其中聲明了7個用來處理不同事件的抽象方法。15方

法用

途windowActivated(WindowEvente)窗口被激活時調用windowClosed(WindowEvente)窗口被關閉時調用windowClosing(WindowEvente)窗口正在被關閉時調用windowDeactivated(WindowEvente)窗口從激活狀態到非激活狀態時調用windowDeiconified(WindowEvente)窗口從最小化狀態變成正常狀態時調用windowIconified(WindowEvente)窗口由正常狀態變成最小化狀態時調用windowOpened(WindowEvente)窗口打開時調用6.窗口事件(2)完成示例:要求關閉窗口前彈出對話框詢問“您確定要關閉當前窗口嗎”,選擇“是”關閉窗口,選擇“否”回到窗口界面。166.窗口事件(3)有三個步驟:①實現相關事件監聽器接口;②窗口注冊事件源的動作監聽器;③實現事件觸發時要進行的相關處理。17①②③7.任務實現(1)任務分析:四則運算在程序中可以直接使用Java運算符來實現,開方可以調用Math類的sqrt方法來實現,倒數可以使用1來除以原始的數字。當用戶需單擊“=”的時候,計算器需要將最終的計算結果顯示到文本框中。其他的計算器功能都可以通過計算器內部的程序實現。例如使用某個字符串或者數字來保存相應的結果,如果需要計取、存儲、累加或者清除結果,可以通過改變或者讀取我們所保存的值來實現。187.任務實現(2)①MyMath工具類:使用float、double兩種浮點基本類型來進行計算,容易損失精度。我們使用一個自己定義加減乘除方法的類,此類使用BigDecimal來封裝基本類型,既不損失精度,也可以進行超大數字的四則運算。197.任務實現(3)②CalService類主要是用來處理計算器的業務邏輯,用戶在操作計算器時,此類將計算結果返回,并且,會記錄計算器的狀態(用戶的上一步操作)。包含以下方法:StringcallMethod(Stringcmd,Stringtext),調用方法并返回計算結果Stringcall(Stringtext,booleanisPercent),用來計算加、減、乘、除法,并返回封裝成String類型的結果。參數text是顯示框中的數字內容,boolean類型的參數isPercent代表是否有“%”運算,如果有,便加上去StringsetReciprocal(Stringtext),用來計算倒數,并返回封裝成String類型的結果。Stringsqrt(Stringtext),用來計算開方,并返回封裝成String類型的結果。StringsetOp(Stringcmd,Stringtext),設置操作符號。StringsetNegative(Stringtext),設置正負數,當text是正數時,返回負數的數字字符串,反之,則返回正數的數字字符串。StringcatNum(Stringcmd,Stringtext),連接輸入的數字,每次點擊數字,就把把新加的數字追加到后面,并封裝成字符串返回。StringbackSpace(Stringtext),刪除最后一個字符,并返回結果。StringmCmd(Stringcmd,Stringtext),用來實現“M+”、“MC”、“MR

溫馨提示

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

評論

0/150

提交評論