使用java语言编写一个简易的计算器(完整代码与详细步骤都有哦!)
【案例介绍】
1**.**案例描述
本案例要求利用Java Swing 图形组件开发一个可以进行简单的算术运算的图形化计算器。
2**.**运行结果
运行结果
【案例目标】
- 学会分析“简易计算器”程序实现的逻辑思路。
- 能够独立完成“简易计算器”程序的源代码编写、编译及运行。
- 掌握JavaSwing界面编程的应用。
- 了解计算器逻辑运算实现。
【案例分析】
要制作一个计算器,首先要知道它由哪些部分组成,如下图所示:
一个简单的图形化界面计算器,需要由界面组件、组件的时间监听器和具体的事件处理逻辑组成。
实现一个简易图形化界面计算器可分以下几个步骤:
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{<