已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 Java编程实践 计算器的实现 主讲 张思民仰恩大学计算机与信息学院Java课程组 2 计算器 Applet实现 学习目标理解并掌握Java中的类 对象 继承 方法等概念 以及Applet的基本框架和事件处理的方法学会使用JDK编写 调试和运行JavaApplet应用程序利用awt组件编写一个计算器 实现基本的四则运算 3 计算器 Applet实现 编程要求用编辑工具编写Java代码 在JDK1 4 x环境下编译运行 实现应用程序指定的功能程序代码格式整齐规范 便于阅读程序注释完整规范 简明易懂 4 计算器 Applet实现 学习内容1 回顾AWT组件及事件编程方法Java1 0 2的事件处理Java1 1的事件处理2 Applet编程方法3 相关类与方法4 程序实现5 总结 5 Java1 0 2的事件处理 使用单一的java awt Event类来接受所有类型的事件 使用action handleEvent 以及其他的一些事件处理方法 如鼠标事件 键盘事件 焦点事件 来进行相应事件的事件处理 缺点 造成长if分支语句组 不利于面向对象的编程 6 Java1 1对事件处理的改进 引入java awt event包更加面向对象 易于理解定义了事件的 发生者 和 监听者 对象按钮事件 文本事件 选择事件 调整事件 鼠标事件 键盘事件等事件以类层次来表达 取代了1 0 2中的单一的类 并可以自定义事件类型 7 事件及处理机制 用户操作GUI组件时会引发各种事件 事件 描述 发生了什么事情 的对象 系统根据用户的操作构造出相应事件类的对象 事件源 事件的产生地 事件处理程序 是一个方法 它接收一个事件对象 分析它 并完成对该事件的处理 每个事件有一个相应的监听者接口 它规定了能够接收 并处理 该类事件的方法的规范 监听者 实现了监听者接口的类 它包含有事件处理程序 编程人员要为事件源指定监听者对象 即指定处理某种事件的事件处理程序 8 事件及处理机制 组件 事件发生者 触发一个相应类型的事件此事件由相应类型的Listener 事件监听者 接收并处理 9 事件及处理机制 调用按扭的addActionListener 方法 为该按扭指定监听者 10 几个有用的概念 事件 在java awt event包中定义了若干类型的事件类监听者接口 特定类型的Listener接口 用于监听特定类型的事件监听者类 是实现了某种监听者接口的类 由编程者定义事件监听者 是某个监听者类的对象 由编程者使用new创建 11 实现步骤 根据需要定义相应类型的监听者类 在类的定义中完成事件的处理 创建事件监听者对象 为将会触发事件的组件C注册相应的事件监听者对象 使用C的addXXXListener 方法 例 ButtonAct java 12 publicclassButtonActextendsFrame publicButtonAct 为b1注册事件监听者B1b1 addActionListener newB1 add b1 利用innerclass结构定义监听者类classB1implementsActionListener 利用actionPerformed方法进行事件处理publicvoidactionPerformed ActionEvente who setText Button1 13 事件与监听者类型 XXXListener接口与XXXEventXXX为特定类型常用类型 Action Item Focus Key Window MouseEventvs Mouse MouseMotionListener注册与取消 组件包含的新方法addXXXListener 与removeXXXListener 14 监听者接口中有什么 每种Listener接口均定义了一套abstract方法 编程者必须在监听者类中实现这些方法来做事件处理 例 ActionListener actionPerformed WindowListener windowOpened Closing Closed Activated Deactivated Iconified Deiconified 15 事件类 ActionEvent类 属于动作事件 包括 点击按钮 双击一个列表中的选项 选择菜单项 在文本框中按回车 最典型的例子是 鼠标点击按钮所产生的事件 经ActionListener接口触发一连串动作 再由actionPerformed 方法完成这些动作 e getSource 返回事件发生的对象 名 e getActionCommand 返回按扭名 动作事件的命令字符串 ActionListener接口publicvoidactionPerformed ActionEvente 16 2 Applet编程 Applet的生命周期及方法Applet的绘图Applet类的层次Applet程序的运行 17 Applet的生命周期 构造方法 vs init 方法 结论 构造方法的执行时间早于init 18 Applet生命周期各方法 Applet的建立 释放init 初始化 Applet被浏览器载入时运行start 启动Applet 每次回到当前页时运行stop 暂停Applet 每次离开当前页时执行destroy 释放对象资源 关浏览器时执行生命周期称为Applet的主线程一般由Browser或appletviewer自动调用 19 Applet的绘图周期 绘图周期称为AWT线程Applet一开始运行 就自动启动了这两个线程 20 Applet类 Applet类的层次结构java lang Objectjava awt Component Container Panel AppletApplet小程序的实现 extendsApplet 21 Applet的GUI编程 Applet是一种特殊的Panel 它是JavaApplet程序的最外层容器 Applet容器的缺省布局策略与Panel一致 都是FlowLayOut 可放置简单构件 Label Button等 以及其他非顶层容器 Panel 可绘制用户自定义成分 绘制图形 文字 显示图象 事件处理 22 Applet执行方式 Applet编译生成的字节码文件 class 存储于WebServer class文件名嵌在HTML页面中当WebClient的Browser下载并显示含有Applet的HTML时 将自动执行该Applet 显示动画声音 响应用户事件 23 将Applet嵌入HTML HTML文件可以向它所嵌入的Applet传递参数 这个任务是通过HTML文件的一个专门标记来完成 24 3 相关类与方法 Appletinit TextFieldStringgetText 继承于TextComponent voidsetText Stringt ComponentvoidsetBackground Colorc voidsetForeground Colorc voidsetBounds intx inty intwidth intheight Color gray blue pink green 常数 25 3 相关类与方法 ContainervoidsetLayout LayoutManagermgr add Componentcomp ActionEventStringgetActionCommand ObjectgetSource 继承于EventObject ButtonvoidaddActionListener ActionListenerL DoubledoubledoubleValue 26 4 程序实现 1 定义相关组件和变量2 Applet的初始化 init 3 事件处理 actionPerformed 4 其他自定义方法方法 doOperator doClear doForeScreen 27 4 程序实现 基本过程 1 输入数据 ForeScreen2 输入运算符 OpCurrentForeScreen BackScreen 第一运算数 ForeScreen OpCurrent OpPre3 输入数据 ForeScreen4 输入运算符 OpCurrent BackScreen OpPre ForeScreen 运算 运算结果 BackScreen ForeScreen OpCurrent OpPre 28 4 程序实现 事件处理流程 29 4 程序实现 运算过程 30 1 定义相关组件和变量 用于显示输入和输出的文本框privateTextFieldtfAnswer 按钮 数字 0 9 privateButtonb0 b1 b2 b3 b4 b5 b6 b7 b8 b9 按钮 依次为 C privateButtonbPoint bEqual bPlus bMinus bClear bMulti bDivision 当前输入的运算符 前一个运算符privateStringOperatorCurrent OperatorPre 运算符前后的两个运算数 ForeScreen称为第二运算数 BackScreen称为第一运算数 privateStringForeScreen BackScreen 输入数据是否为浮点数privatebooleanisFloat false 31 2 Applet的初始化 publicvoidinit OperatorCurrent newString OperatorPre newString ForeScreen newString BackScreen newString 设置Applet组件的背景色和前景色this setBackground Color gray this setForeground Color blue setLayout null 布局设置tfAnswer newTextField 定义文本框组件的位置 x y 和大小 宽width 高度height tfAnswer setBounds 5 5 100 20 将文本框组件加入到Appletadd tfAnswer 第1排按钮bClear newButton C bClear setBounds 5 30 20 20 bClear setBackground Color pink bClear addActionListener this add bClear bDivision newButton bDivision setBounds 30 30 20 20 bDivision setBackground Color green bDivision addActionListener this add bDivision bMulti newButton bMulti setBounds 55 30 20 20 bMulti setBackground Color green bMulti addActionListener this add bMulti bMinus newButton bMinus setBounds 80 30 20 20 bMinus setBackground Color green bMinus addActionListener this add bMinus 32 第2排按钮b7 newButton 7 b7 setBounds 5 55 20 20 b7 addActionListener this add b7 b8 newButton 8 b8 setBounds 30 55 20 20 b8 addActionListener this add b8 b9 newButton 9 b9 setBounds 55 55 20 20 b9 addActionListener this add b9 第3排按钮b4 newButton 4 b4 setBounds 5 80 20 20 b4 addActionListener this add b4 b5 newButton 5 b5 setBounds 30 80 20 20 b5 addActionListener this add b5 b6 newButton 6 b6 setBounds 55 80 20 20 b6 addActionListener this add b6 bPlus newButton bPlus setBounds 80 55 20 45 bPlus setBackground Color green bPlus addActionListener this add bPlus 第4排按钮b1 newButton 1 b1 setBounds 5 105 20 20 b1 addActionListener this add b1 b2 newButton 2 b2 setBounds 30 105 20 20 b2 addActionListener this add b2 b3 newButton 3 b3 setBounds 55 105 20 20 b3 addActionListener this add b3 第5排按钮b0 newButton 0 b0 setBounds 5 130 45 20 b0 addActionListener this add b0 bPoint newButton bPoint setBounds 55 130 20 20 bPoint addActionListener this add bPoint bEqual newButton bEqual setBounds 80 105 20 45 bEqual setBackground Color green bEqual addActionListener this add bEqual 33 3 事件处理方法 publicvoidactionPerformed ActionEvente Strings newString if e getSource instanceofButton 如果事件来源为按钮 按钮为数字和 if e getSource b0 e getSource b1 e getSource b2 e getSource b3 e getSource b4 e getSource b5 e getSource b6 e getSource b7 e getSource b8 e getSource b9 e getSource bPoint 按钮为数字 追加到输入的数据后if e getSource bPoint s e getActionCommand doForeScreen s 34 按钮为 且之前没有输入过 将小数点 追加到输入的数据后if e getSource bPoint 35 按钮为运算符if e getSource bMulti e getSource bDivision e getSource bPlus e getSource bMinus 如果已有第二运算数则保存当前运算符 进行运算if ForeScreen OperatorCurrent e getActionCommand doOperator 否则 如连续两次输入运算符或输入 运算后再输入运算符 保存新输入的运算符到OperatorPreelseOperatorPre e getActionCommand returntrue 36 4 其他自定义方法 方法 doForeScreen 功能 每次点击按钮 0 9 之后将文本追加到变量ForeScreen 并显示在文本框中publicvoiddoForeScreen Strings ForeScreen s tfAnswer setText ForeScreen 方法 doClear 功能 点击按钮 C 后 执行清除文本框和其他存储的变量 回到初始状态publicvoiddoClear OperatorCurrent OperatorPre ForeScreen BackScreen isFloat false tfAnswer setText ForeScreen 37 4 其他自定义方法 方法 doOperator 功能 利用运算数和运算符进行运算以得到结果pub
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年链路工程师招聘面试题库及参考答案
- 2025年助理经理招聘面试参考题库及答案
- 2025年电气工程项目经理招聘面试题库及参考答案
- 2025年房地产经纪人招聘面试参考题库及答案
- 2025年智库研究员招聘面试参考题库及答案
- 2025年网页内容管理员招聘面试题库及参考答案
- 2025年编程语言教练招聘面试参考题库及答案
- 2025年技术培训专员招聘面试题库及参考答案
- 2025年市场关系经理招聘面试参考题库及答案
- 2025年娱乐内容策划招聘面试参考题库及答案
- 代为领取诉讼费退费委托书
- 营养师二级论文 范文八
- 端子压接作业指导书
- 汉声数学绘本《数是怎么来的》
- 电子商务说课公开课一等奖市优质课赛课获奖课件
- 武汉城市简介PPT
- 口腔颌面颈部解剖课件
- 妇产科名词解释填空简答
- 浙江省教育科学规划课题活评审表
- LY/T 2787-2017国家储备林改培技术规程
- GB/T 8269-2006柠檬酸
评论
0/150
提交评论