Java计算器实验报告.doc

上传人:jian****018 文档编号:9620050 上传时间:2020-04-06 格式:DOC 页数:12 大小:104KB
返回 下载 相关 举报
Java计算器实验报告.doc_第1页
第1页 / 共12页
Java计算器实验报告.doc_第2页
第2页 / 共12页
Java计算器实验报告.doc_第3页
第3页 / 共12页
点击查看更多>>
资源描述
一、目标:通过Java程序开发实训使学生掌握面向对象程序设计(Java)课堂讲授的内容,灵活运用到Java程序的开发与设计中。二、要求:按时参加Java程序开发实训训练,不得迟到和早退;独立完成程序设计;按要求撰写实践报告。三、详细内容:使用面向对象程序设计(Java)课程讲授内容,编写一个简单的计算器,要求实现如下功能:1. 进行图形界面设计 通过图形界面设计,掌握Frame类、Panel类、5种布局管理器、文本框、标签及按钮的使用方法。2. 实现计算器的基本功能包括加减乘除四则运算、清除结果等功能。3. 实现计算器的存储计算功能包括清空、使用清零、退格。和基本运算4类的属性及所用到的方法布局布局: 整个界面(Frame)采用BorderLayout布局 P1组件添加到Frame的南部 P1采用默认的流式布局添加文本框P2组件添加到Frame的中部P2采用网格布局四行五列放各种按钮用到的类: mycal KeyAdapter WindowAdapterMyCal类:mycal类的属性:b;按钮数组保存各种按键 以后放到Panel2中tf;文本匡显示输入及运算结果num1,num2,jieguo运算数char c,ch;运算符号,ch为输入的运算符号,c保存ch输入的“+-*/”Panel p1,p2;/两个组件p1放文本匡p2放按钮P2的布局为网格布局5行4列 mycal类的方法:1 构造方法:设置标题;设置文本框;文本框中添加匿名内置类(KeyAdapter)实现键盘的输入和运算;将各种组件添加到容器,设置各种按键的颜色 ;添加WindowListenr监听器设置关闭按钮; 2Main方法: 新建一个mycal类;4. actionPerformed 方法: 设置按钮的输入和运算,当按下运算数将其显示在文本匡中如果之前清零则将零去除当按下运算符将其保存在c中并将文本匡内容清空当按下等号判断字符c的符号进行相应的运算并将结果显示在文本框中。当按下清空按钮将文本框清空,当按下退格按钮取文本框中字符串的字串删除一个符号。KeyAdapter类:KeyAdapter类的属性:mycal类中的属性KeyAdapter类的方法: keyPressed()方法 当键盘按下时, 判断键盘的输入当为“+-*/”时记录下num1及c;当为”=”或“Enter”时记录下num2并将结果计算出来keyReleased()方法当键盘松开时,如果是按下“+-*/”后松开将文本框清空如果是按下“=”或“Enter”后松开将计算结果显示在文本框中WindowAdapter类:WindowAdapter类的属性:WindowEvent eWindowAdapter类的方法:windowClosing();设置关闭按钮、四、源代码 /*类mycal继承Frame实现了ActionListener接口;往容器中添加两个组件Panel1,Panel2;Panel中放置文本匡,Panel2中放置各种按键;文本匡中以匿名内置类的方式添加键盘监听器实现键盘的输入及运算;为Panel2中各种按键添加动作监听器实现按键的输入及运算;*/import java.awt.*;import java.awt.event.*;class mycal extends Frame implements ActionListener private Button b; private TextField tf; private double num1,num2,jieguo;/运算数 private char c,ch;/运算符 Panel p1,p2;/两个组件 public mycal() setTitle(My Calculator 1.0); p1=new Panel(); tf=new TextField(25); tf.addKeyListener(new KeyAdapter() /添加键盘监听器现键盘的输入及运算 public void keyPressed(KeyEvent e) char ch=e.getKeyChar(); if(+-*/.indexOf(ch)!=-1) num1=Double.parseDouble(tf.getText(); c=ch; if(ch=|ch=e.VK_ENTER) num2=Double.parseDouble(tf.getText(); switch(c) case +: jieguo=num1+num2; break; case -: jieguo=num1-num2; break; case *: jieguo=num1*num2; break; case /: jieguo=num1/num2; break; public void keyReleased(KeyEvent e) char ch=e.getKeyChar(); if(+-*/.indexOf(ch)!=-1) tf.setText(null); if(ch=|e.getKeyCode()=e.VK_ENTER) tf.setText(Double.toString(jieguo); ); p1.add(tf); add(p1,North); p2=new Panel(); p2.setLayout(new GridLayout(5,4,10,8); b=new Button21; for(int i=1;i21;i+) bi=new Button(); bi.setFont(new Font(仿宋,0,16); String str1=/789*456-123+0; b1.setLabel(退格); b2.setLabel(清空); b3.setLabel(清零); for(int i=4;i=17;i+) bi.setLabel(str1.charAt(i-4)+); b18.setLabel(+/-); b19.setLabel(.); b20.setLabel(=); for(int i=1;i21;i+) p2.add(bi); bi.addActionListener(this); bi.setBackground(new Color(20,130,180); bi.setForeground(Color.yellow); for(int i=1;i4;i+) bi.setBackground(new Color(120,180,170); bi.setForeground(Color.blue); for(int i=1;i=4;i+) bi*4.setBackground(new Color(120,180,170); bi*4.setForeground(Color.red); b20.setBackground(Color.red); add(p2); /Dimension di=this.getPreferredSize(); /System.out.println(di.width+,+di.height); setBounds(100,200,230,300); setVisible(true); addWindowListener(new WindowAdapter()/设置关闭按钮 public void windowClosing(WindowEvent e) e.getWindow().setVisible(false); e.getWindow().dispose(); System.exit(0); ); public static void main(String args) new mycal(); public void actionPerformed(ActionEvent e)/ 为Panel2中各种按键添加动作监听器实现按键的输入及运算; String str=e.getActionCommand().trim(); if(0123456789.indexOf(str)!=-1) if(tf.getText().equals(0)tf.setText(null); tf.setText(tf.getText()+str); return; if(+-*/.indexOf(str)!=-1) num1=Double.parseDouble(tf.getText(); c=str.charAt(0); tf.setText(null); return; else if(str.equals(=) num2=Double.parseDouble(tf.getText(); switch(c) case +: jieguo=num1+num2; break; case -: jieguo=num1-num2; break; case *: jieguo=num1*num2; break; case /: jieguo=num1/num2; break; tf.setText(Double.toString(jieguo); else if(str.equals(+/-) if(tf.getText().isEmpty()=false) Double lnum=-(Double.parseDouble(tf.getText(); tf.setText(Double.toString(lnum); else tf.setText(-); else if(str.equals(清空) tf.setText(null); else if(str.equals(清零) tf.setText(0); else if(str.equals(退格) tf.setText(tf.getText().substring(0,tf.getText().length()-1); 五、程序运行结果演示计算器界面7+8清空9*47*8退格清零六、总结通过本次实验让我对Frame类、Panel类、5种布局管理器、文本框、标签及按钮的使用方法,有了进一步的了解。同时在实验过程中也发现了自己的许多不足,但通过查询对其有有了更深刻大大大的了解.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!