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

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;
}
}
/**
*
*/
}
這個是控制器代碼,感興趣的可以自己研究的啦..
