




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、目标:通过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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 路径安全评估模型-洞察及研究
- 一年级数学课题研究集体备课计划
- 电子商务仓储材料设备进场计划及管理措施
- 成本精益化管理-洞察及研究
- 量子随机数生成-第18篇-洞察及研究
- 基于PLC控制的机械手臂设计研究
- 普鲁士蓝类似物的光生电荷传输机制及其光催化析氢性能研究
- 部编版初中语文古诗词“花”意象教学研究
- 玉米赤霉烯酮降解菌的分离、鉴定与解毒应用分析
- 基于甘蓝穴盘苗的取苗末端执行器设计与研究
- 2025浙能集团甘肃有限公司新能源项目招聘22人笔试历年参考题库附带答案详解
- 【正版授权】 IEC 60931-2:2025 EN-FR Shunt power capacitors of the non-self-healing type for AC systems having a rated voltage up to and including 1 000 V - Part 2: Ageing test and destru
- 班主任安全管理培训讲座
- 2024年云南省罗平县人民医院公开招聘护理工作人员试题带答案详解
- 2025年农业灌溉站租赁合同范本
- 高新技术产业厂房抵押贷款合同范本
- 网络安全运维认证试卷含答案
- 冲压工厂批次管理办法
- 【历史 广东卷】2025年广东省高考招生统一考试真题历史试卷(真题+答案)
- 2025年江苏盐城市射阳县城市照明服务有限公司聘考试笔试试题(含答案)
- 2025年团委工作总结-循“荔枝之道”而行走稳青春育人之路
评论
0/150
提交评论