java fx 计算器_javaFX 实现计算器[面向对象-2小时完成]

本文介绍了一个使用JavaFX编写的计算器应用,通过面向对象设计,实现了加、减、乘、除的功能。用户点击操作按钮后,程序会根据选择的操作进行计算,并显示结果。代码中包括了按钮事件处理和工厂模式的应用。
摘要由CSDN通过智能技术生成

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

e296422c18c2a4e39b5019755e9306d6.png

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;

}

}

/**

*

*/

}

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值