计算器"/>
java fx 计算器
可惜放学了,明天再整理,先上张图吧:
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;
}
}
/**
*
*/
}
这个是控制器代码,感兴趣的可以自己研究的啦..
更多推荐
java fx 计算器
发布评论