可惜放学了,明天再整理,先上张图吧:
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; } } /** * */ }
这个是控制器代码,感兴趣的可以自己研究的啦..