综合练习1计算器.doc_第1页
综合练习1计算器.doc_第2页
综合练习1计算器.doc_第3页
综合练习1计算器.doc_第4页
综合练习1计算器.doc_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目标:用java编程实现计算器的运算功能,包括加、减、乘、除,以及求负、取余等。主要用到的组件有框架、面板、文本框、按钮和菜单栏。编程思想:一、界面制作定义计算器类Calculator,该类继承JFrame类。参考思路:(1)界面整体窗口采用边界布局,通过另外建立若干面板组织组件。布局策略如下:North位置的上放一个面板,文本框放入其中,用于显示运算中的数据及结果。Center位置放一个面板,放Back与C按钮。South位置放一个面板,放其它按钮。对于各个面板内部,可选择一定的布局策略进行布局。(2)添加菜单项,其中,点击“帮助”菜单后,界面如下。点击“关于”菜单项,弹出对话框,如下:点击“文件”菜单后,界面如下:该菜单第一个菜单项为空操作,单击第二个菜单项“退出”会退出程序的运行。二、事件处理Calculator继承JFrame类并实现ActionListener接口。单击任何一个按钮都会触发ActionEvent事件,要处理这些事件就必须实现ActionListener接口的actionPerformed方法。运行界面参考如下。三、具体要求(1)请安装上述所列的要求,完成该计算器的制作。(2)理解并能解释代码的各个部分。package lp;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.lang.Math;public class lpp extends JFrameJButton b1,b2,b3,b4,b5,b6, b7,b8,b9,b12,a1,a2,n1,n2,n3,n4,n5,n6,n7,n8,n9,n0;JMenu fil,hp,fil2;JMenuItem gy,tu;JTextField tex;JPanel pan1;JPanel pan2;JPanel pan3; double result = 0;double num=0;String ch = =; /定义字符,用来存放运算符boolean start;public lpp (String s)super(s);pan1=new JPanel(); pan2=new JPanel(); pan3=new JPanel(); tex=new JTextField();/创建文本框 BorderLayout border=new BorderLayout (); setSize(300,240); setLocation(400, 400); setResizable(false); /窗口大小不可变 setLayout(border); /*/生成按键*/ b1=new JButton(.); b2=new JButton(+); b3=new JButton(-); b4=new JButton(*); b5=new JButton(); b6=new JButton(=); b7=new JButton(sqrt); b8=new JButton(%); b9=new JButton(1/x); a1=new JButton(Back); a2=new JButton(C); b12=new JButton(+/-); n1=new JButton(1); n2=new JButton(2); n3=new JButton(3); n4=new JButton(4); n5=new JButton(5); n6=new JButton(6); n7=new JButton(7); n8=new JButton(8); n9=new JButton(9); n0=new JButton(0); pan1.add(tex); GridLayout grid2=new GridLayout (); pan1.setLayout(grid2); /pan3布局策略为网格 tex.setBounds(45,25,200,35); tex.setHorizontalAlignment(JTextField.RIGHT); /将文本输入框里的文字设成右对齐 pan1.setBounds(45,25,200,40); GridLayout grid1=new GridLayout (1,2); pan2.setLayout(grid1); /pan3布局策略为网格 pan2.setBounds(45,25,200,30); pan2.add(a1);pan2.add(a2); GridLayout grid=new GridLayout (5,4); pan3.setLayout(grid); /pan3布局策略为网格 pan3.setBounds(45,25,200,180); pan3.add(n7);pan3.add(n8);pan3.add(n9);pan3.add(b5); pan3.add(n4);pan3.add(n5);pan3.add(n6);pan3.add(b4); pan3.add(n1);pan3.add(n2);pan3.add(n3);pan3.add(b3); pan3.add(n0); pan3.add(b12); pan3.add(b1); pan3.add(b2); pan3.add(b9); pan3.add(b8); pan3.add(b7); pan3.add(b6); add(pan1, BorderLayout.NORTH); add(pan3, BorderLayout.SOUTH); add(pan2, BorderLayout.CENTER); /*/生成一个菜单栏*/ JMenuBar bar=new JMenuBar(); setJMenuBar(bar); ButtonGroup g=new ButtonGroup(); fil=new JMenu(文件); hp=new JMenu(帮助); fil2=new JMenu(文件); gy=new JMenuItem(关于); fil.add(fil2); bar.add(fil); bar.add(hp); hp.add(gy); String s1=打开,保存; JRadioButtonMenuItem jj=new JRadioButtonMenuItem (s1.length) ; for(int i=0;i=0) tex.setText(+Math.sqrt(num); else tex.setText(输入函数无效); if(get.equals(1/x) num=Double.parseDouble(tex.getText(); if(num!=0) tex.setText(+1/num); else tex.setText(输入函数无效); /*定义内部类anniu*/class anniu implements ActionListener public void actionPerformed(ActionEvent e) String get = e.getActionCommand(); /得到事件源(即按钮)上的文字 if (start) tex.setText(); if (get.equals(+/-) /如果按了-/+按钮,就将数设成相反数 tex.setText(tex.getText() + -); start = false; if (!get.equals(+/-) if (get.equals(Back) String str = tex.getText(); if (str.length() 0) tex.setText(str.substring(0, str.length() - 1); else if ( get.equals(C) tex.setText(); tex.setText(0); start = true; else tex.setText(tex.getText() + get); class operation implements ActionListener public void actionPerformed(ActionEvent e)String get=e.getActionCommand();if(start)ch=get;else calculate(Double.parseDouble(tex.getText(); ch = get; start = true; public void calculate(double x) if (ch.equals(+) result =result+ x; else if(ch.equals(-) result -= x; else if (ch.equals(*) result *= x; else if (ch.equals() result /= x; else if (ch.equals(%) resu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论