可惜放學了,明天再整理,先上張圖吧:
package com.wk.view; import com.wk.cal.CalAdd; import com.wk.cal.CalDiv; import com.wk.cal.CalMul; import com.wk.cal.CalSub; import com.wk.model.Operator; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.TextField; /** * Created by suowei on 2015/10/13. */ public class CalcuController { @FXML Button btnAdd,btnSub,btnMul,btnDiv,btnClear,btnResult; @FXML Button btnNum1,btnNum2,btnNum3,btnNum4,btnNum5,btnNum6,btnNum7,btnNum8,btnNum9,btnNum0; @FXML TextField textResult = new TextField(); String num1,num2; private double n1,n2; // 實例化計算加法的類 private CalAdd calAdd = new CalAdd(); // 實例化計算減法的類 private CalSub calSub = new CalSub(); // 實例化計算乘法的類 private CalMul calMul = new CalMul(); // 實例化計算除法的類 private CalDiv calDiv = new CalDiv(); // 定義 加減乘除四個字符串 , jdk 7 新特性 final String add ="┼",sub="─",mul="×",div="÷"; // 創建一個cal_operator 作為switch語句的參數 String cal_operator; public void setbtnAddAction(){ // 此方法是 用戶點擊+號按鈕的方法,當用戶點擊這個按鈕以后,首先要獲取到用戶輸入的文本 num1 = textResult.getText(); // 然后清空,以供用戶第二次輸入 textResult.setText(""); // 當用戶點擊 = 號按鈕的時候 , switch 語句可以知道 用戶執行的是 加法 下面 減法 乘法 ,除法 類似,就不寫了 cal_operator = btnAdd.getText(); } public void setBtnSubAction(){ num1 = textResult.getText(); textResult.setText(""); cal_operator = btnSub.getText(); } public void setBtnMulAction(){ num1 = textResult.getText(); textResult.setText(""); cal_operator = btnMul.getText(); } public void setBtnDivAction(){ num1 = textResult.getText(); textResult.setText(""); cal_operator = btnDiv.getText(); } public void setBtnClearAction(){ // 清空按鈕的執行方法,沒什么好說的啦 設置文本的值為空 textResult.setText(""); } public void setBtnResultAction(){ // = 號按鈕 的事件方法: 獲取用戶第二次輸入的數字值 將他的值傳遞給 num2 num2 = textResult.getText(); // 然后清空文本,當程序計算出結果以后 再顯示 textResult.setText(""); // 此方法為重中之重 當用點擊 加減乘除 四個任意按鈕,此方法將會檢測到,並執行對應的方 n1 = new Double(num1); n2 = new Double(num2); OperationFactory factory = new OperationFactory(); factory.createOperation(cal_operator); } public void finalCaluator(String operator) { // 實例化 計算 加減乘除 方法的參數 n1,n2, 把 用戶第一次和第二次輸入的值分別付給他們 /* switch (operator){ // 當用戶選擇 + 號按鈕時執行的方法. 以下相似 case add: textResult.setText(calAdd.getResult(n1,n2).toString()); break; //這里替換成為工廠模式,利用工廠模式來 實例化對象; case sub: textResult.setText(calSub.getResult(n1,n2).toString()); break; case mul: textResult.setText(calMul.getResult(n1,n2).toString()); break; case div: checkDivNumAction(); textResult.setText(calDiv.getResult(n1,n2).toString()); break; }*/ } public void setBtnNum0Action(){ // 按鈕 0 的事件 textResult.setText(textResult.getText()+"0"); } public void setBtnNum1Action(){ // 按鈕 1 的事件 textResult.setText(textResult.getText()+"1"); } public void setBtnNum2Action(){ // 按鈕 2 的事件 textResult.setText(textResult.getText()+"2"); } public void setBtnNum3Action() { // 按鈕 3 的事件 textResult.setText(textResult.getText()+"3"); } public void setBtnNum4Action(){ // 按鈕 4 的事件 // 以下類似太累了,就不寫了... textResult.setText(textResult.getText()+"4"); } public void setBtnNum5Action(){ textResult.setText(textResult.getText()+"5"); } public void setBtnNum6Action(){ textResult.setText(textResult.getText()+"6"); } public void setBtnNum7Action(){ textResult.setText(textResult.getText()+"7"); } public void setBtnNum8Action(){ textResult.setText(textResult.getText()+"8"); } public void setBtnNum9Action() { textResult.setText(textResult.getText()+"9"); } /** * 工廠一的參數傳遞方式決定了它只能在 -----類n內使用 */ class OperationFactory { public Operator createOperation(String operator){ final String add ="┼",sub="─",mul="×",div="÷"; Operator operator1 = null; switch (operator){ case add: operator1 = new CalAdd(); textResult.setText(operator1.getResult(n1, n2).toString()); break; case sub: operator1 = new CalSub(); textResult.setText(operator1.getResult(n1,n2).toString()); break; case mul: operator1 = new CalMul(); textResult.setText(operator1.getResult(n1,n2).toString()); break; case div: operator1 = new CalDiv(); textResult.setText(operator1.getResult(n1,n2).toString()); break; } return operator1; } } /** * */ }
這個是控制器代碼,感興趣的可以自己研究的啦..