当前位置: 首页 > article >正文

使用java语言编写一个简易的计算器(完整代码与详细步骤都有哦!)

【案例介绍】

1**.**案例描述

本案例要求利用Java Swing 图形组件开发一个可以进行简单的算术运算的图形化计算器。

2**.**运行结果

运行结果

【案例目标】

  1. 学会分析“简易计算器”程序实现的逻辑思路。
  2. 能够独立完成“简易计算器”程序的源代码编写、编译及运行。
  3. 掌握JavaSwing界面编程的应用。
  4. 了解计算器逻辑运算实现。

【案例分析】

要制作一个计算器,首先要知道它由哪些部分组成,如下图所示:

一个简单的图形化界面计算器,需要由界面组件、组件的时间监听器和具体的事件处理逻辑组成。

实现一个简易图形化界面计算器可分以下几个步骤:

1.UI组件创建和初始化:包括窗体的创建,显示计算结果文本框、清除按钮、数字按钮、运算符等按钮的初始化。

2.在窗体中添加UI组件:包括放置数字键及运算符面板、放置清除框面板。

3.布局结束之后,就是计算器的难点:编写事件处理程序。

4.按键的响应实现。

5.计算逻辑的实现。

6.注册监听器

【实现步骤】

一、创建类Calculator.java

1. 创建类Calculator作为测试类;

1)创建主函数

2)通过 UIManager 来设置窗体的 UI 风格

2.创建类CalculatorTest

1)创建类CalculatorTest,并为类CalculatorTest添加无参的构造方法

public CalculatorTest()

{

……

}

2)主函数中声明计算器的对象cal

CalculatorTest cal= newCalculatorTest();

二、图形化计算器界面及实现

1.UI组件创建和初始化:包括窗体的创建,显示计算结果文本框、清除按钮、数字按钮、运算符等按钮的初始化。组件的创建均在类CalculatorTest中定义声明为成员变量;组件的初始化、属性设置均在构造方法CalculatorTest( )中完成。

(1)在类CalculatorTest中定义声明为成员变量

1)创建窗体和初始化

// 创建一个 JFrame 对象并初始化。JFrame 可以理解为程序的主窗体。

JFrame frame= newJFrame(“XXX的计算器”);

2)创建文本框和初始化

//创建一个JTextField对象并初始化。显示 20 列的文本内容,result为运算结果,下面有定义,可以先隐藏这个参数,后面再显示

JTextField result_TextField= newJTextField(result, 20);

//属性设置:水平靠右

result_TextField.setHorizontalAlignment(JTextField._RIGHT_);

3)创建各个按钮和初始化

//数字按钮、运算符等按钮

JButton btNum[],btOper[],btPoint,btEqual,btBack,btSqrt,btPingfang,btLifang,btYushu;

(2)在构造方法CalculatorTest( )中初始化、设置相关属性

/***1事件源 ***/

//数字按钮初始化:

//数字键0到9

btNum=newJButton[10];//数组对象

for(inti=0;i<=9;i++)

{

btNum[i]=newJButton(i+“”);

}

// 设置数字0在当前模型上的键盘助记符

btNum[0].setMnemonic(KeyEvent._VK_0_);

// 操作符按钮:

//计算的操作符命令按钮,加减乘除

btOper=newJButton[4];

btOper[0]=newJButton(“+”);

btOper[1]=newJButton(“-”);

btOper[2]=newJButton(“*”);

btOper[3]=newJButton(“/”);

//计算的特殊操作符命令按钮,平方根、平方、立方、求余

btSqrt=newJButton(“Sqrt”);

btPingfang=newJButton(“^2”);

btLifang=newJButton(“^3”);

btYushu=newJButton(“%”);

// 特殊按钮:(点 、等于、清空)

btPoint= newJButton(“.”);

btEqual= newJButton(“=”);

btBack=newJButton(“Backspace”);

2.在窗体中添加UI组件:包括放置数字键及运算符面板、放置清除框面板。

(1)在类CalculatorTest中定义声明为成员变量

JPanel pan1,pan2;

(2)在构造方法CalculatorTest( )中初始化、设置相关属性

1)在窗体中创建第一个面板pan1并设置布局

//设置第一个JPanel pan1

pan1= newJPanel();

2)在第一个面板pan1中添加组件并设置布局

pan1.setLayout(newBorderLayout());

pan1.add(result_TextField, BorderLayout._WEST_);

pan1.add(btBack, BorderLayout._EAST_);

3)在窗体中创建第二个面板pan2并设置布局

// 创建第二个 Jpanel对象并初始化

pan2= newJPanel();

// 设置该容器的布局为五行四列网格布局,边距为5像素

pan2.setLayout(newGridLayout(5, 4, 5, 5));

4)在第二个面板pan2中添加组件

// 将用于计算的按钮添加到容器内

pan2.add(btNum[7]);

pan2.add(btNum[8]);

pan2.add(btNum[9]);

pan2.add(btOper[3]);

pan2.add(btNum[4]);

pan2.add(btNum[5]);

pan2.add(btNum[6]);

pan2.add(btOper[2]);

pan2.add(btNum[1]);

pan2.add(btNum[2]);

pan2.add(btNum[3]);

pan2.add(btOper[1]);

pan2.add(btNum[0]);

pan2.add(btPoint);

pan2.add(btEqual);

pan2.add(btOper[0]);

pan2.add(btSqrt);

pan2.add(btPingfang);

pan2.add(btLifang);

pan2.add(btYushu);

// 设置 pan2 对象的边距

pan2.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

5)设置窗体frame的属性(窗口位置,窗口大小为可调)

// 设置主窗口出现在屏幕上的位置

frame.setLocation(300, 200);

// 设置窗体可以调大小

frame.setResizable(true);

6)将面板pan1和面板pan2加入窗体

//窗体中可以放置 JPanel,这里我们将面板pan1和面板pan2加入窗体

frame.getContentPane().setLayout(newBorderLayout());

frame.getContentPane().add(pan2, BorderLayout._NORTH_);

frame.getContentPane().add(pan, BorderLayout._CENTER_);

或者

frame.setLayout(newBorderLayout());

frame.add(pan1, BorderLayout._NORTH_);

frame.add(pan2, BorderLayout._CENTER_);

7)设置窗体frame的属性(窗口大小匹配、窗口可见等)

frame.pack();//根据UI组件内容决定窗口大小

frame.setVisible(true);//设置窗口可见

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

8)主函数中设置窗体的 UI 风格

try{<

http://www.lryc.cn/news/2420628.html

相关文章:

  • 手把手教你实现Gitlab远程备份(超详细,图文并茂)
  • 基于Java+Jsp+Ssm+Mysql实现的Java Web家庭理财消费支出收支管理系统设计与实现
  • 为什么家中照明用LED灯越来越不耐用?
  • 多功能聊天软件的设计与开发——音频视频聊天模块
  • java汽车维修管理系统(开题+源码)
  • 92条 SVN命令
  • 史上最全免费收录网站搜索引擎登录口(经典)
  • 12个国外稳定无限量免费网盘
  • plsql 存储过程 批量提交_浅谈PetShop之使用存储过程与PLSQL批量处理(附案例)
  • html5 右侧客服代码,简洁右侧栏客服代码
  • F5 负载均衡器
  • ZFAKA-自动发卡收款平台全套搭建教程(含支付接口设置)
  • Visual C++6.0下载和基础使用方法
  • WebApi接口测试工具:WebApiTestClient
  • 新浪短url地址
  • 物联网技术的发展历程及其未来趋势
  • Java基于线上考试系统(开题+源码)
  • 串口和TCP互相转发工具
  • 基于web的音乐网站的设计与实现(论文+源码)_kaic
  • C++——sort函数
  • 如何自学电脑编程?详细教程来了
  • 个人网站的搭建部署及自定义域名
  • Javascript基础(四):获得焦点和失去焦点事件
  • 《ASP.NET 开发从入门到精通》----导读
  • 一起撸个朋友圈吧 (Step6) 评论对齐(未完全版本)【上】
  • ROS的STM32电机驱动
  • 背包问题之回溯法
  • dell灵越笔记本后盖怎么拆_dell笔记本拆机详解【图文教程】
  • jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏
  • [ArcPy] 遥感影像去黑边-第六届全国大学生GIS技能大赛试题