简易计算器实现.docx
- 文档编号:14989882
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:14
- 大小:405.13KB
简易计算器实现.docx
《简易计算器实现.docx》由会员分享,可在线阅读,更多相关《简易计算器实现.docx(14页珍藏版)》请在冰点文库上搜索。
简易计算器实现
JAVA实验
-------简易计算器实现
1.要实现的局面,如图所示:
计算器整体采用一个盒式布局(BorderLayout),在盒式布局中我们分为两个JPanel,一个采用流式布局(FLowLayout),里面分为文本域和按钮;一个是按钮区域,采用网格式布局(GridLayout),在里面加入16个按钮。
2.分析之后,我们来进行操作,首先进行布局,如图所示:
第一步:
建立一个类(class),命名为Calculator
第二步:
在main函数中加入如下代码,如图所示:
代码详解:
publicstaticvoidmain(String[]args){
JFrameframe=newJFrame();//新建JFrame
frame.setLayout(newBorderLayout());//设置整体布局管理器,采用盒式布局(BorderLayout)
Fontfont=newFont("黑体",Font.BOLD,16);//设置字体大小
//盒式布局中分为东西南北四个部分,此为设置北部和中部
JPanelnorthPanel=newJPanel();//设置北部
JPanelcenterPanel=newJPanel();//设置中部
northPanel.setLayout(newFlowLayout());
//设置北部为流式布局(FlowLayout)
centerPanel.setLayout(newGridLayout(4,4));
//设置中部为网格式布局(GridLayout),设置为4行4列
JTextFieldfield=newJTextField(20);//设置文本框内的容量
JButtonclearBtn=newJButton("C");//设置按钮字体
//这里设置颜色的时候,一般常见的颜色,可直接用Color.系统会自动提示一些常见的颜色,但是也可以自己合成颜色,用newColor(a,b,c);a,b,c为三个参数,必须是0-255之间
clearBtn.setBackground(Color.GREEN);//设置按钮背景色
clearBtn.setForeground(newColor(0xff,0x00,0x00));//设置按钮前景色,可自己合成颜色(必须是0-255的整数)
field.setFont(font);//调用字体
clearBtn.setFont(font);//给按钮调用字体
northPanel.add(field);//在北部中加入文本框
northPanel.add(clearBtn);//在北部文本框后面加入清零按钮
Stringstr="123+456-789*0.=/";//将要显示的字符放到字符串里面
for(inti=0;i<16;i++)
{
JButtonbtn=newJButton(str.substring(i,i+1));//这里面的两个参数为所要取子串的开始和结束位置
btn.setFont(font);//给16个按钮调用字体
centerPanel.add(btn);//取子串
}
frame.add(northPanel,BorderLayout.NORTH);//把northPanel放到盒式布局的北部
frame.add(centerPanel,BorderLayout.CENTER);//把centerPanel放到盒式布局的中部
frame.setVisible(true);//实例化
frame.pack();//系统自动计算到合适的大小(此为系统的一个方法,直接调用)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//缺省关闭
}
此上代码为简单的布局,把计算器的框架做出来,但是并不能实现功能,接下来,我们就要实现功能。
3.布局完成后,我们来实现功能,如图所示:
第一步:
重新建立一个class类(为了代码的可重用性,所以我们新建一个类,分开写)
命名为:
Calculators.
第二步:
建立好Calculators类之后,我们首先进行对Frame的继承,如图所示:
然后,加入如下代码:
代码详解:
publicclassCalculatorsextendsJFrame{
privateJTextFieldfield;//定义成员
privateJButtonclearBtn;//定义成员
privateJButton[]btns;//定义成员
privateJPanelnorthPanel,centerPanel;//设置窗体的属性
publicCalculators(Stringtitle)//构造函数
{
super(title);//调用父类构造函数
field=newJTextField(20);
clearBtn=newJButton("C");
northPanel=newJPanel();
centerPanel=newJPanel();//赋初始值
btns=newJButton[16];
Stringstr="123+456-789*0.=/";
for(inti=0;i { btns[i]=newJButton(str.substring(i,i+1)); } } /** *该方法完成容器的布局以及添加组件 */ publicvoidinit()//初始化 { this.setLayout(newBorderLayout()); northPanel.setLayout(newFlowLayout()); centerPanel.setLayout(newGridLayout(4,4)); northPanel.add(field); northPanel.add(clearBtn); for(inti=0;i centerPanel.add(btns[i]); } this.add(northPanel,BorderLayout.NORTH); this.add(centerPanel,BorderLayout.CENTER); } publicvoidsetColorAndFont()//设置字体样式,大小和颜色 { Fontfont=newFont("黑体",Font.BOLD,20); field.setFont(font); clearBtn.setFont(font); for(inti=0;i<16;i++) { btns[i].setFont(font); } } publicvoidshowMe()//输出 { init(); setColorAndFont(); this.setVisible(true); this.pack(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicstaticvoidmain(String[]args){ Calculatorsframe=newCalculators("计算器"); frame.showMe(); } } 第三步: 各个方法完成后,我们要对各个按钮及文本框进行事件监听。 注意: 事件监听分为三个组成,一个是事件源,一个是事件对象,还有一个是事件监听器。 一个事件源可对应多个事件对象,但是一个事件对象只能对应一个事件监听器。 而事件源,就是图形组件,事件对象就是对组件做的不同的操作,事件监听器就是我们要实现的程序。 我们要做的只有2步: 第一,实现一个监听器(就是添加监听器的步骤); 第二,将监听器交给事件源(就是定义监听器的步骤)。 首先,为了代码的简洁,我们将监听器与继承写在一起,合二为一,如下: 接下,我们来实现一个监听器,也就是添加监听器 添加完监听器之后,我们对监听器进行定义,在这里,有一个简单的方法,可省去我们写代码的步骤,系统会自动将要写的代码显示出来,步骤如图所示: 可得到如图所示的自动代码: 在加入定义代码之前,我们先进行分析: 我们把16个按钮分成3类: 数字和点号是一类 加减乘除运算符是一类 等号是一类 而我们要做的事情是: 数字和点号点击之后我们把它要追加到计算器文本框 按了加减乘除符号之前我们要把当前显示的字符保存起来,然后还要把字符清除掉 然后用户按的符号我们也要保存下来,之前按下的数字和符号都要保存,然后也要清除掉 最后按等号的时候要进行运算,把结果显示在文本框上面 我们就可以在这个方法中进行对监听器的定义,加入如图所示代码: 代码详解: @Override publicvoidactionPerformed(ActionEvente)//定义监听器 { Stringstr=e.getActionCommand();//获取被点击按钮上面的文本 if("0123456789.".indexOf(str)! =-1)//判断给定的字符串是不是在前面的字符串中出现过,如果出现过,则返回第一次出现的下标位置,如果没出现过则返回-1 { field.setText(field.getText()+str);//先用get得到文本。 然后加上将文本追加到文本框内 } /** *在这里我们有3个事情要做 *把文本框中的文本值转化为数字保存起来 *把按下的符号保存下来 *把文本框清空 */ elseif("+-*/".indexOf(str)! =-1) { num1=Double.parseDouble(field.getText());//我们要把得到的字符转化为Double类型 operator=str.charAt(0); field.setText(""); } elseif(str.equals("=")) { num2=Double.parseDouble(field.getText()); switch(operator){ case'+': num1+=num2;break; case'-': num1-=num2;break; case'*': num1*=num2;break; case'/': num1/=num2;break; } field.setText(num1+"");//把num1值显示出来,并转换成字符串 } elseif(str.equals("C")) { field.setText("");//清空 num1=0.0;//把三个变量也要进行清空 num2=0.0; operator='\0'; } } 注意: 在这里面,我们事先定义了三个变量,一个是num1,一个是num2,还有运算符operator。 而定义的时候,我们应提前定义,不要再方法里面定义。 如图所示。 给事件加完监听器后,我们还要注意,在这里加入一行代码。 调用我们的监听器。 这样,我们的一个简单的计算器就做好了。 效果如图所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 计算器 实现