编写计算器代码时,自定义一个button类,初始化了一些操作

import javafx.scene.control.Button;public class MyButton extends Button{public MyButton(String text) {super(text);setPrefWidth(35);setPrefHeight(30);}
}

然后就是程序代码,并没有封装多深

import javafx.application.Application;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;/*** 计算器*/
public class Main extends Application {private int number1;//存开始数字 0private int number2;//存结束数字 0private String logic;//存运算符的变量 nullprivate TextField view;private boolean flag;//记录第一次点击运算符之后的拼接操作private boolean eq;//记录是否按了等号public void start(Stage primaryStage) {try {//创建布局对象AnchorPane root = new AnchorPane();
//          root.setBackground(new Background(new BackgroundFill(Color.GRAY, CornerRadii.EMPTY, Insets.EMPTY)));//创建场景对象Scene scene = new Scene(root);primaryStage.setScene(scene);//设置窗口宽高primaryStage.setWidth(228);primaryStage.setHeight(260);//设置不能改变大小primaryStage.setResizable(false);//调用方法添加组件addComp(root);primaryStage.show();} catch(Exception e) {e.printStackTrace();}}/*** 该方法是添加组件* @param root*/private void addComp(AnchorPane root) {//添加显示框view = new TextField("0");view.setMinSize(200, 50);view.setLayoutX(10);view.setLayoutY(15);//设置只读view.setEditable(false);//内容右对齐view.setAlignment(Pos.CENTER_RIGHT);//设置字体view.setFont(new Font("Consolas", 20));root.getChildren().add(view);//添加一个表格布局GridPane gridPane = new GridPane();//设置布局中元素组件横向间距gridPane.setHgap(20);//设置布局中元素组件纵向间距gridPane.setVgap(10);gridPane.setLayoutY(65);gridPane.setPrefWidth(228);gridPane.setPrefHeight(185);
//      gridPane.setBackground(new Background(new BackgroundFill(Color.GRAY, CornerRadii.EMPTY, Insets.EMPTY)));gridPane.setPadding(new Insets(10));//列容器root.getChildren().add(gridPane);//创建数字监听器对象NumberEvent numberEvent = new NumberEvent();//添加按钮Button btn_7 = new MyButton("7");btn_7.setOnMouseClicked(numberEvent);gridPane.add(btn_7,0,0);Button btn_8 = new MyButton("8");btn_8.setOnMouseClicked(numberEvent);gridPane.add(btn_8,1,0);Button btn_9 = new MyButton("9");btn_9.setOnMouseClicked(numberEvent);gridPane.add(btn_9,2,0);Button btn_4 = new MyButton("4");btn_4.setOnMouseClicked(numberEvent);gridPane.add(btn_4,0,1);Button btn_5 = new MyButton("5");btn_5.setOnMouseClicked(numberEvent);gridPane.add(btn_5,1,1);Button btn_6 = new MyButton("6");btn_6.setOnMouseClicked(numberEvent);gridPane.add(btn_6,2,1);Button btn_1 = new MyButton("1");btn_1.setOnMouseClicked(numberEvent);gridPane.add(btn_1,0,2);Button btn_2 = new MyButton("2");btn_2.setOnMouseClicked(numberEvent);gridPane.add(btn_2,1,2);Button btn_3 = new MyButton("3");btn_3.setOnMouseClicked(numberEvent);gridPane.add(btn_3,2,2);Button btn_0 = new MyButton("0");btn_0.setOnMouseClicked(numberEvent);gridPane.add(btn_0,0,3);Button btn_C = new MyButton("C");btn_C.setOnMouseClicked(new EventHandler<Event>() {public void handle(Event event) {clean();}});gridPane.add(btn_C,1,3);Button btn_eq = new MyButton("=");btn_eq.setOnMouseClicked(new EventHandler<Event>() {public void handle(Event event) {//记录运算结构switch (logic) {case "+":number1 = number1+number2;break;case "-":number1 = number1-number2;break;case "*":number1 = number1*number2;break;case "/":number1 = number1/number2;break;default:break;}//把结果显示回显示框view.setText(number1+"");//按了等号eq = true;}});gridPane.add(btn_eq,2,3);//运算符的按钮//创建监听器对象LogicEvent logicEvent = new LogicEvent();Button btn_add = new MyButton("+");//给按钮添加事件监听器btn_add.setOnMouseClicked(logicEvent);gridPane.add(btn_add,3,0);Button btn_sub = new MyButton("-");btn_sub.setOnMouseClicked(logicEvent);gridPane.add(btn_sub,3,1);Button btn_mul = new MyButton("*");btn_mul.setOnMouseClicked(logicEvent);gridPane.add(btn_mul,3,2);Button btn_div = new MyButton("/");btn_div.setOnMouseClicked(logicEvent);gridPane.add(btn_div,3,3);}public static void main(String[] args) {launch(args);}/*** 数字监听器*/class NumberEvent implements EventHandler<Event>{public void handle(Event event) {//如果上一次是等号,得先清除一次if (eq) {clean();}/***  ①判断运算符变量是否有值②如果有值,将按钮的内容保存到2中的变量③如果没有值,将按钮的内容保存到1中的变量*///获取当前显示框内容String text = view.getText();//获取事件源  (获取触发事件的按钮)MyButton btn = (MyButton)event.getSource();//先获取当前按钮的内容String btnNumber = btn.getText();//将显示框原本的数字拼接当前按钮的数字if (flag) {text = "0";flag = false;}text+=btnNumber;//将字符串转换为int类型int num = Integer.parseInt(text);//没有点击运算符按钮if (logic==null) {number1 = num;view.setText(number1+"");//点击了运算符按钮}else {number2 = num;view.setText(number2+"");}}}/*** 运算符的事件监听器*/class LogicEvent implements EventHandler<Event>{public void handle(Event event) {//得到按钮MyButton logicBtn = (MyButton)event.getSource();//获取按钮内容logic = logicBtn.getText();flag = true;eq = false;}}/*** 清除计算器参与逻辑的变量*/private void clean() {number1 = 0;number2 = 0;logic = null;flag = false;eq = false;//显示0view.setText("0");}
}

JAVAFX版简易计算器相关推荐

  1. 网页版简易计算器(仅加减乘除)

    网页版简易计算器(仅加减乘除) ------------------------------------- 开发工具与关键技术:Visual Studio 2015 C# 作者:林敏静 撰写时间:20 ...

  2. Java程序设计 图形用户界面 小巫版简易计算器

    /** 作者:wwj 时间:2012/4/13 功能:实现一个计算器应用程序实验要求:编写一个模拟计算器的应用程序,使用面板和网格布局, 添加一个文本框,10个数字按钮(0~9),4个加减乘除按钮, ...

  3. Web网页版简易计算器

    说明: 1.这个计算器的功能比较简单,包括加减乘除,小数点,退格,清除以及等于. 2.首先写出html,即界面主要框架:再写出css,即属性,使框架看起来美观一些:最后就是javascript,就是功 ...

  4. [转载] Python版简易计算器的实现

    参考链接: Python | 使用Tkinter的简单GUI计算器 学了一周的Python,这篇文章算是为这段时间自学做的小总结. 一.Python简介 Python是一门十分优美的脚本语言,如果学过 ...

  5. 制作网页版简易计算器(Calculator)

    网页版计算器的制作比想象中要来的容易,界面上只需固定计算器面板的宽高和按钮的宽高即可. 先放张图: 代码下载与演示:https://codepen.io/yinyoupoet/pen/oeewWw 讲 ...

  6. C语言实现控制台简易计算器(VC6.0可用)

    一.项目介绍 C语言版简易计算器,包含几个小功能,包括基本运算.进制转换.一元二次方程,支持返回操作,整体源码比较精简,代码逻辑简单,扩展性强,非常适合新手了解和学习的小项目. 二.运行截图 导航菜单 ...

  7. 做一个简易计算器(VB版)

    今天小编来带大家用VB做一个简易计算器 废话不多说,下面就是具体步骤了 1.创建控件组的方法首先创建一个命令按钮,调整其大小(觉得合适就行),名称为Command1,Caption 属性为数字 0 : ...

  8. android 坐标点计算器,Android实现简易计算器

    开之前我还是想问问老师,为什么一定要星期天前交作业呢?由于条件限制,作品是赶出来的不是细细琢磨出来的.所以在这版apk中功能较为简易,有待后期再不断更新与优化 总体效果图如下 布局activity_m ...

  9. 前端 JavaScript 实现一个简易计算器

    前端使用 JavaScript 实现一个简易计算器,没有难度,但是里面有些小知识还是需要注意的,算是一次基础知识回顾吧. 题目 实现一个简易版的计算器,需求如下: 1.除法操作时,如果被除数为0,则结 ...

  10. android简易计算器

    android简易计算器 说明:完成简易版计算器,能够实现基本的加.减.乘.除运算 图示: 布局文件 <?xml version="1.0" encoding="u ...

最新文章

  1. 分布式监控报警平台Centreon之:Centreon安装(1)
  2. linux ftp服务器搭建及用户的分配,Linux搭建FTP服务器
  3. RTEMS 的 AT91SAM9260 移植(8): 编译
  4. linux内存管理的主要概念是虚拟内存,有关linux内存管理机制的相关内容,linux物理内存和虚拟内存,深入了解Linux内存运行 ......
  5. C# DataTable的Distinct解决方案及表的复制
  6. 常用的变量值交换方法总结(C++实现)
  7. go mysql slave_MySQL基于GTIDs的MySQL Replication-Go语言中文社区
  8. 用AtomicStampedReference解决ABA问题
  9. Eigen教程(5)
  10. 谷歌android q 安装,谷歌修复了Pixel智能机安装Android Q Beta 4后循环重启的bug
  11. 【verilog教程】第3篇:verilog关键词
  12. latex---插入三线表伪代码流程图
  13. US1M-ASEMI小电流贴片快恢复二极管
  14. 互联网专家资源分享(二)
  15. 如何在PPT中设置选择题
  16. 计算机网络基础实验报告--利用数据包嗅探器Wireshark捕获数据包实验
  17. ssms远程服务器地址,SSMS无法连接到远程服务器,崩溃
  18. 【ROS】C++编程
  19. Firefox 59 正式发布:改进页面加载速度和屏幕截图工具
  20. JavaScript面向对象学习深拷贝、浅拷贝(三)

热门文章

  1. Ain_搜索引擎这样用才有效率
  2. 【无标题】CentOS7 安装 向日葵 远程工具
  3. Thermal_Config_Tool_exe_v1使用
  4. Django入门教程
  5. taxi计费器c语言程序,出租车计价器VHDL程序与仿真
  6. 有关威纶通weinview触摸屏HMI 定时器的那些事
  7. js判断数组的六种方法
  8. 根据RGB配色改变图片颜色
  9. Java实现多张图片转pdf
  10. windows服务获取登录用户名