javaFX 實現計算器[面向對象-2小時完成]


可惜放學了,明天再整理,先上張圖吧:

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;
        }
    }
    /**
     *
     */
}

  這個是控制器代碼,感興趣的可以自己研究的啦..


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM