博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javaFX 实现计算器[面向对象-2小时完成]
阅读量:4339 次
发布时间:2019-06-07

本文共 4953 字,大约阅读时间需要 16 分钟。

可惜放学了,明天再整理,先上张图吧:

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

  这个是控制器代码,感兴趣的可以自己研究的啦..

转载于:https://www.cnblogs.com/suowei/p/4878767.html

你可能感兴趣的文章
16 MySQL--正确使用索引
查看>>
Ubuntu下安装Kafka Manager
查看>>
使用Aspose.Cells的基础知识整理
查看>>
前端知识点回顾之重点篇——ES6的async函数和module
查看>>
UML类图详解_补上相关代码
查看>>
Angularjs中的Controller
查看>>
HDU_1527 取石子游戏(威佐夫博弈)
查看>>
node的“宏任务(macro-task)”和“微任务(micro-task)”机制
查看>>
makefile之VPATH和vpath的使用
查看>>
使用 GCC 在 IBM AIX 上编译程序
查看>>
数码相框各模块时钟流详解
查看>>
XMLHTTPRequest对象的创建与浏览器的兼容问题
查看>>
NSSortDescriptor的使用
查看>>
新手教程:107条Javascript的常用语句
查看>>
NetScaler Best Practice With VMAC In A High Availability Configuration
查看>>
[ python ] 封装
查看>>
Map集合
查看>>
Mybatis中的in查询和foreach标签
查看>>
查找整数编程总结
查看>>
每日三问
查看>>