Java 编程实践.ppt

上传人:创****公 文档编号:1607176 上传时间:2019-10-19 格式:PPT 页数:43 大小:341KB
返回 下载 相关 举报
Java 编程实践.ppt_第1页
第1页 / 共43页
Java 编程实践.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《Java 编程实践.ppt》由会员分享,可在线阅读,更多相关《Java 编程实践.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1,CCIT软件学院,Java 编程实践,计算器的实现,CCIT软件学院 软件教研室,2,CCIT软件学院,计算器(Applet实现),学习目标理解并掌握Java中的类、对象、继承、方法等概念, 以及Applet的基本框架和事件处理的方法学会使用JDK编写、调试和运行Java Applet应用程序 利用awt组件编写一个计算器,实现基本的四则运算,3,CCIT软件学院,计算器(Applet实现),编程要求用编辑工具编写Java代码,在JDK 1.4.x环境下编译运行,实现应用程序指定的功能 程序代码格式整齐规范、便于阅读 程序注释完整规范、简明易懂,4,CCIT软件学院,计算器(Applet实

2、现),学习内容1. 回顾 AWT组件及事件编程方法Java1.0.2的事件处理Java1.1的事件处理2. Applet编程方法3. 相关类与方法4. 程序实现5. 总结,5,CCIT软件学院,Java1.0.2的事件处理,使用单一的java.awt.Event类来接受所有类型的事件;使用action(), handleEvent( )以及其他的一些事件处理方法(如鼠标事件、键盘事件、焦点事件)来进行相应事件的事件处理。缺点:造成长if分支语句组,不利于面向对象的编程,6,CCIT软件学院,Java1.1 对事件处理的改进,引入java.awt.event包更加面向对象,易于理解定义了事件的“

3、发生者”和“监听者”对象 按钮事件、文本事件、选择事件、调整事件、 鼠标事件、键盘事件等事件以类层次来表达,取代了1.0.2中的单一的 类,并可以自定义事件类型,7,CCIT软件学院,事件及处理机制,用户操作GUI组件时会引发各种事件。事件 :描述“发生了什么事情”的对象。 系统根据用户的操作构造出相应事件类的对象。事件源:事件的产生地。事件处理程序:是一个方法,它接收一个事件对象、 分析它、并完成对该事件的处理。每个事件有一个相应的监听者接口,它规定了能够接收(并处理)该类事件的方法的规范。监听者:实现了监听者接口的类,它包含有事件处理 程序。编程人员要为事件源指定监听者对象(即指定处理某种

4、事件的事件处理程序)。,8,CCIT软件学院,事件及处理机制,组件(事件发生者)触发一个相应类型的事 件此事件由相应类型的Listener(事件监听者) 接收并处理,9,CCIT软件学院,事件及处理机制,调用按扭的 addActionListener ( ) 方法,为该按扭指定监听者。,10,CCIT软件学院,几个有用的概念,事件 在java.awt.event包中定义了若干类型 的事件类监听者接口 特定类型的Listener接口,用于 监听特定类型的事件监听者类 是实现了某种监听者接口的类,由编程者定义事件监听者 是某个监听者类的对象,由编 程者使用new创建,11,CCIT软件学院,实现步

5、骤,根据需要定义相应类型的监听者类,在类的 定义中完成事件的处理;创建事件监听者对象;为将会触发事件的组件C注册相应的事件监听 者对象(使用C的addXXXListener()方法)。例:ButtonAct.java,12,CCIT软件学院,public class ButtonAct extends Frame . . . public ButtonAct() . . . /为b1注册事件监听者B1b1.addActionListener(new B1();add(b1);. . . /利用inner class结构定义监听者类 class B1 implements ActionListe

6、ner /利用actionPerformed方法进行事件处理public void actionPerformed(ActionEvent e)who.setText(Button 1); . . . /:,13,CCIT软件学院,事件与监听者类型,XXXListener接口与XXXEventXXX为特定类型常用类型: Action, Item,Focus, Key, Window, MouseEvent vs. Mouse/MouseMotionListener注册与取消:组件包含的新方法 addXXXListener()与removeXXXListener(),14,CCIT软件学院,监听

7、者接口中有什么?,每种Listener接口均定义了一套abstract方法, 编程者必须在监听者类中实现这些方法来做事 件处理;例:ActionListener: actionPerformed()WindowListener:windowOpened/Closing/Closed/Activated/ Deactivated/Iconified/Deiconified(),15,CCIT软件学院,事件类,ActionEvent类:属于动作事件,包括:点击按钮;双击一个列表中的选项;选择菜单项;在文本框中按回车。最典型的例子是:鼠标点击按钮所产生的事件,经ActionListener接口触发一

8、连串动作,再由actionPerformed()方法完成这些动作。e.getSource() 返回事件发生的对象(名)e.getActionCommand() 返回按扭名(动作事 件的命令字符串)。ActionListener 接口public void actionPerformed(ActionEvent e),16,CCIT软件学院,2.Applet编程,Applet的生命周期及方法Applet的绘图Applet类的层次Applet程序的运行,17,CCIT软件学院,Applet的生命周期,构造方法,vs.,init()方法,结论: 构造方法的执行时间早于init(),18,CCIT软件

9、学院,Applet生命周期各方法,Applet的建立、释放init():初始化,Applet被浏览器载入时运行start():启动Applet,每次回到当前页时运行stop():暂停Applet,每次离开当前页时执行destroy():释放对象资源,关浏览器时执行生命周期称为Applet的主线程一般由Browser或appletviewer自动调用,19,CCIT软件学院,Applet的绘图周期,绘图周期称为AWT线程Applet一开始运行,就自动启动了这两个线程,20,CCIT软件学院,Applet类,Applet类的层次结构java.lang.Objectjava.awt.Componen

10、t .Container .Panel.AppletApplet小程序的实现:extends Applet,21,CCIT软件学院,Applet的GUI编程,Applet是一种特殊的Panel, 它是Java Applet程序的最外层容器。 Applet容器的缺省布局策略与Panel一致, 都是FlowLayOut 。可放置简单构件(Label、Button等)以及其他非顶层容器(Panel);可绘制用户自定义成分(绘制图形、文字、显示图象)事件处理,22,CCIT软件学院,Applet执行方式,Applet编译生成的字节码文件(.class)存储于Web Server.class文件名嵌在H

11、TML页面中当Web Client的Browser下载并显示含有Applet的HTML时,将自动执行该Applet:显示动画声音,响应用户事件,23,CCIT软件学院,将Applet嵌入HTML, HTML文件可以向它所嵌入的Applet传递参数, 这个任 务是通过HTML文件的一个专门标记来完成,24,CCIT软件学院,3. 相关类与方法,Appletinit()TextFieldString getText() 继承于TextComponentvoid setText(String t)Componentvoid setBackground(Color c) void setForegro

12、und(Color c) void setBounds(int x, int y, int width, int height)Color.gray (blue,pink,green) 常数,25,CCIT软件学院,3. 相关类与方法,Containervoid setLayout(LayoutManager mgr)add(Component comp)ActionEventString getActionCommand()Object getSource() 继承于EventObjectButtonvoid addActionListener(ActionListener L)Double

13、double doubleValue(),26,CCIT软件学院,4.程序实现,1).定义相关组件和变量2).Applet的初始化(init)3).事件处理 (actionPerformed)4).其他自定义方法方法:doOperator,doClear, doForeScreen,27,CCIT软件学院,4.程序实现-基本过程,1)输入数据ForeScreen2)输入运算符OpCurrentForeScreenBackScreen(第一运算数), ForeScreen= OpCurrentOpPre3)输入数据ForeScreen4)输入运算符OpCurrent,BackScreen,OpP

14、re,ForeScreen,运算,运算结果BackScreen , ForeScreen=OpCurrentOpPre,28,CCIT软件学院,4.程序实现-事件处理流程,29,CCIT软件学院,4.程序实现-运算过程,30,CCIT软件学院,1).定义相关组件和变量,/用于显示输入和输出的文本框 private TextField tfAnswer;/按钮:数字“0”-“9” private Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9; /按钮: 依次为-“.”,“=”,“+”,“-”,“C”,“*”,“/” private Button bPoint,bEqu

15、al,bPlus,bMinus,bClear,bMulti,bDivision;/当前输入的运算符,前一个运算符 private String OperatorCurrent,OperatorPre;/运算符前后的两个运算数(ForeScreen称为第二运算数,BackScreen称为第一运算数) private String ForeScreen,BackScreen;/输入数据是否为浮点数 private boolean isFloat = false;,31,CCIT软件学院,2).Applet的初始化,public void init() OperatorCurrent = new S

16、tring(); OperatorPre = new String(); ForeScreen = new String(); BackScreen = new String();/设置Applet组件的背景色和前景色 this.setBackground(Color.gray); this.setForeground(Color.blue); setLayout(null); /布局设置 tfAnswer = new TextField();/定义文本框组件的位置(x,y)和大小(宽width,高度height) tfAnswer.setBounds(5,5,100,20);/将文本框组件加

17、入到Appletadd(tfAnswer);,/第1排按钮 bClear = new Button(C); bClear.setBounds(5,30,20,20); bClear.setBackground(Color.pink);bClear.addActionListener(this); add(bClear); bDivision = new Button(/); bDivision.setBounds(30,30,20,20); bDivision.setBackground(Color.green); bDivision.addActionListener(this); add(

18、bDivision); bMulti = new Button(*); bMulti.setBounds(55,30,20,20); bMulti.setBackground(Color.green);bMulti.addActionListener(this); add(bMulti); bMinus = new Button(-); bMinus.setBounds(80,30,20,20); bMinus.setBackground(Color.green);bMinus.addActionListener(this); add(bMinus);,32,CCIT软件学院,/第2排按钮 b

19、7 = new Button(7); b7.setBounds(5,55,20,20); b7.addActionListener(this); add(b7); b8 = new Button(8); b8.setBounds(30,55,20,20); b8.addActionListener(this); add(b8); b9 = new Button(9); b9.setBounds(55,55,20,20); b9.addActionListener(this); add(b9); /第3排按钮 b4 = new Button(4); b4.setBounds(5,80,20,20

20、); b4.addActionListener(this); add(b4); b5 = new Button(5); b5.setBounds(30,80,20,20); b5.addActionListener(this); add(b5); b6 = new Button(6); b6.setBounds(55,80,20,20); b6.addActionListener(this); add(b6); bPlus = new Button(+); bPlus.setBounds(80,55,20,45); bPlus.setBackground(Color.green); bPlus

21、.addActionListener(this); add(bPlus);,/第4排按钮 b1 = new Button(1); b1.setBounds(5,105,20,20); b1.addActionListener(this); add(b1); b2 = new Button(2); b2.setBounds(30,105,20,20); b2.addActionListener(this); add(b2); b3 = new Button(3); b3.setBounds(55,105,20,20); b3.addActionListener(this); add(b3); /

22、第5排按钮 b0 = new Button(0); b0.setBounds(5,130,45,20); b0.addActionListener(this); add(b0); bPoint = new Button(.); bPoint.setBounds(55,130,20,20); bPoint.addActionListener(this); add(bPoint); bEqual = new Button(=); bEqual.setBounds(80,105,20,45); bEqual.setBackground(Color.green); bEqual.addActionLi

23、stener(this); add(bEqual);,33,CCIT软件学院,3).事件处理方法,public void actionPerformed(ActionEvent e) String s = new String(); if(e.getSource() instanceof Button)/如果事件来源为按钮 /按钮为数字和“.” if(e.getSource() = b0)|(e.getSource() = b1)|(e.getSource() = b2)| (e.getSource() = b3)|(e.getSource() = b4)|(e.getSource() = b

24、5)| (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,CCIT软件学院,/按钮为“.”且之前没有输入过“.”,将小数点“.”追加到输入的数据后 if(e.getSource() = bPoint),35,CCIT软件学院,/按钮为运算符 if

25、(e.getSource() = bMulti)|(e.getSource() = bDivision)| (e.getSource() = bPlus)|(e.getSource() = bMinus) /如果已有第二运算数则保存当前运算符,进行运算 if(ForeScreen != ) OperatorCurrent = e.getActionCommand(); doOperator(); /否则(如连续两次输入运算符或输入“=”运算后再输入运算符),保存新输入的运算符到OperatorPre else OperatorPre =e.getActionCommand(); return

26、true; ,36,CCIT软件学院,4).其他自定义方法,/方法:doForeScreen /功能:每次点击按钮0-9之后将文本追加到变量ForeScreen,并显示在文本框中 public void doForeScreen(String s) ForeScreen += s; tfAnswer.setText(ForeScreen); /方法:doClear /功能:点击按钮C后,执行清除文本框和其他存储的变量,回到初始状态 public void doClear() OperatorCurrent = ; OperatorPre = ; ForeScreen = ; BackScree

27、n = ; isFloat = false; tfAnswer.setText(ForeScreen); ,37,CCIT软件学院,4).其他自定义方法,/方法:doOperator /功能:利用运算数和运算符进行运算以得到结果 public void doOperator() double dFore,dBack; Double d; if(OperatorPre.equals() /如果OperatorPre为空(还没有再次输入运算符或“=”),则将当前文本框中的数据保存到BackScreen(第一个运算数),第二运算数置为空BackScreen = ForeScreen; ForeScr

28、een = ; tfAnswer.setText(BackScreen); else ,38,CCIT软件学院,if(ForeScreen.equals() ,39,CCIT软件学院,if(OperatorPre.equals(*) d = new Double(dBack * dFore);tfAnswer.setText(d.toString(); if(OperatorPre.equals(/) d = new Double(dBack / dFore);tfAnswer.setText(d.toString(); /运算后将结果作为第一运算数,而第二运算数置为空 ForeScreen

29、= ; BackScreen = tfAnswer.getText(); /将输入的运算符OperatorCurrent赋给OperatorPre,等待再次输入运算符,以备运算 OperatorPre = OperatorCurrent; ,40,CCIT软件学院,计算器,编辑java代码编译编辑HTML文件运行,41,CCIT软件学院,计算器,总结:由于本程序事件处理比较简单,只有按钮点击事件,采用Java1.1事件处理模型本程序为Applet程序,只能嵌入到HTML中让浏览器来执行,最好能用窗体实现本程序只实现基本的四则运算,和windows附件中的计算器还有很大差距,最好能实现科学型,并有菜单控制,能独立作为一个程序执行,42,CCIT软件学院,计算器,作业(上机练习)编程实现Applet计算器改进和优化利用Swing组件实现(并可在窗体中运行)实现科学型计算器,43,CCIT软件学院,下课!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 校园应用

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁