《Java编程实践》PPT课件.ppt

上传人:牧羊曲112 文档编号:5577024 上传时间:2023-07-30 格式:PPT 页数:43 大小:452.50KB
返回 下载 相关 举报
《Java编程实践》PPT课件.ppt_第1页
第1页 / 共43页
《Java编程实践》PPT课件.ppt_第2页
第2页 / 共43页
《Java编程实践》PPT课件.ppt_第3页
第3页 / 共43页
《Java编程实践》PPT课件.ppt_第4页
第4页 / 共43页
《Java编程实践》PPT课件.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《《Java编程实践》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《Java编程实践》PPT课件.ppt(43页珍藏版)》请在三一办公上搜索。

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

2、let编程方法3.相关类与方法4.程序实现5.总结,1,的事件处理,使用单一的java.awt.Event类来接受所有类型的事件;使用action(),handleEvent()以及其他的一些事件处理方法(如鼠标事件、键盘事件、焦点事件)来进行相应事件的事件处理。缺点:造成长if分支语句组,不利于面向对象的编程,1,Java1.1 对事件处理的改进,引入包更加面向对象,易于理解定义了事件的“发生者”和“监听者”对象 按钮事件、文本事件、选择事件、调整事件、鼠标事件、键盘事件等事件以类层次来表达,取代了1.0.2中的单一的 类,并可以自定义事件类型,1,事件及处理机制,用户操作GUI组件时会引发

3、各种事件。事件:描述“发生了什么事情”的对象。系统根据用户的操作构造出相应事件类的对象。事件源:事件的产生地。事件处理程序:是一个方法,它接收一个事件对象、分析它、并完成对该事件的处理。每个事件有一个相应的监听者接口,它规定了能够接收(并处理)该类事件的方法的规范。监听者:实现了监听者接口的类,它包含有事件处理 程序。编程人员要为事件源指定监听者对象(即指定处理某种事件的事件处理程序)。,1,事件及处理机制,组件(事件发生者)触发一个相应类型的事 件此事件由相应类型的Listener(事件监听者)接收并处理,1,事件及处理机制,调用按扭的 addActionListener()方法,为该按扭指

4、定监听者。,1,几个有用的概念,事件 在包中定义了若干类型 的事件类监听者接口 特定类型的Listener接口,用于 监听特定类型的事件监听者类 是实现了某种监听者接口的类,由编程者定义事件监听者 是某个监听者类的对象,由编 程者使用new创建,1,实现步骤,根据需要定义相应类型的监听者类,在类的 定义中完成事件的处理;创建事件监听者对象;为将会触发事件的组件C注册相应的事件监听 者对象(使用C的addXXXListener()方法)。例:ButtonAct.java,1,public class ButtonAct extends Frame.public ButtonAct()./为b1注

5、册事件监听者B1b1.addActionListener(new B1();add(b1);./利用inner class结构定义监听者类 class B1 implements ActionListener/利用actionPerformed方法进行事件处理public void actionPerformed(ActionEvent e)who.setText(Button 1);./:,1,事件与监听者类型,XXXListener接口与XXXEventXXX为特定类型常用类型:Action,Item,Focus,Key,Window,MouseEvent vs.Mouse/MouseMo

6、tionListener注册与取消:组件包含的新方法 addXXXListener()与removeXXXListener(),1,监听者接口中有什么?,每种Listener接口均定义了一套abstract方法,编程者必须在监听者类中实现这些方法来做事 件处理;例:ActionListener:actionPerformed()WindowListener:windowOpened/Closing/Closed/Activated/Deactivated/Iconified/Deiconified(),1,事件类,ActionEvent类:属于动作事件,包括:点击按钮;双击一个列表中的选项;选

7、择菜单项;在文本框中按回车。最典型的例子是:鼠标点击按钮所产生的事件,经ActionListener接口触发一连串动作,再由actionPerformed()方法完成这些动作。e.getSource()返回事件发生的对象(名)e.getActionCommand()返回按扭名(动作事 件的命令字符串)。ActionListener 接口public void actionPerformed(ActionEvent e),1,2.Applet编程,Applet的生命周期及方法Applet的绘图Applet类的层次Applet程序的运行,1,Applet的生命周期,构造方法,vs.,init()方

8、法,结论:构造方法的执行时间早于init(),1,Applet生命周期各方法,Applet的建立、释放init():初始化,Applet被浏览器载入时运行start():启动Applet,每次回到当前页时运行stop():暂停Applet,每次离开当前页时执行destroy():释放对象资源,关浏览器时执行生命周期称为Applet的主线程一般由Browser或appletviewer自动调用,1,Applet的绘图周期,绘图周期称为AWT线程Applet一开始运行,就自动启动了这两个线程,1,Applet类,Applet类的层次结构.Container.Panel.AppletApplet小程

9、序的实现:extends Applet,1,Applet的GUI编程,Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。Applet容器的缺省布局策略与Panel一致,都是FlowLayOut。可放置简单构件(Label、Button等)以及其他非顶层容器(Panel);可绘制用户自定义成分(绘制图形、文字、显示图象)事件处理,1,Applet执行方式,Applet编译生成的字节码文件(.class)存储于Web Server.class文件名嵌在HTML页面中当Web Client的Browser下载并显示含有Applet的HTML时,将自动执行该Applet:

10、显示动画声音,响应用户事件,1,将Applet嵌入HTML,HTML文件可以向它所嵌入的Applet传递参数,这个任 务是通过HTML文件的一个专门标记来完成,1,3.相关类与方法,Appletinit()TextFieldString getText()继承于TextComponentvoid setText(String t)Componentvoid setBackground(Color c)void setForeground(Color c)void setBounds(int x,int y,int width,int height)Color.gray(blue,pink,gr

11、een)常数,1,3.相关类与方法,Containervoid setLayout(LayoutManager mgr)add(Component comp)ActionEventString getActionCommand()Object getSource()继承于EventObjectButtonvoid addActionListener(ActionListener L)Doubledouble doubleValue(),1,4.程序实现,1).定义相关组件和变量2).Applet的初始化(init)3).事件处理(actionPerformed)4).其他自定义方法方法:doO

12、perator,doClear,doForeScreen,1,4.程序实现-基本过程,1)输入数据ForeScreen2)输入运算符OpCurrentForeScreenBackScreen(第一运算数),ForeScreen=OpCurrentOpPre3)输入数据ForeScreen4)输入运算符OpCurrent,BackScreen,OpPre,ForeScreen,运算,运算结果BackScreen,ForeScreen=OpCurrentOpPre,1,4.程序实现-事件处理流程,1,4.程序实现-运算过程,1,1).定义相关组件和变量,/用于显示输入和输出的文本框 private

13、 TextField tfAnswer;/按钮:数字“0”-“9”private Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;/按钮:依次为-“.”,“=”,“+”,“-”,“C”,“*”,“/”private Button bPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision;/当前输入的运算符,前一个运算符 private String OperatorCurrent,OperatorPre;/运算符前后的两个运算数(ForeScreen称为第二运算数,BackScreen称为第一运算数)private Stri

14、ng ForeScreen,BackScreen;/输入数据是否为浮点数 private boolean isFloat=false;,1,2).Applet的初始化,public void init()OperatorCurrent=new String();OperatorPre=new String();ForeScreen=new String();BackScreen=new String();/设置Applet组件的背景色和前景色 this.setBackground(Color.gray);this.setForeground(Color.blue);setLayout(null

15、);/布局设置 tfAnswer=new TextField();/定义文本框组件的位置(x,y)和大小(宽width,高度height)tfAnswer.setBounds(5,5,100,20);/将文本框组件加入到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.se

16、tBounds(30,30,20,20);bDivision.setBackground(Color.green);bDivision.addActionListener(this);add(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.setBack

17、ground(Color.green);bMinus.addActionListener(this);add(bMinus);,1,/第2排按钮 b7=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);ad

18、d(b9);/第3排按钮 b4=new Button(4);b4.setBounds(5,80,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

19、.setBackground(Color.green);bPlus.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(t

20、his);add(b3);/第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.addActionListe

21、ner(this);add(bEqual);,1,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()=b5)|(e.getSource()=b6)|(e.getSource

22、()=b7)|(e.getSource()=b8)|(e.getSource()=b9)|(e.getSource()=bPoint)/按钮为数字,追加到输入的数据后 if(e.getSource()!=bPoint)s=e.getActionCommand();doForeScreen(s);,1,/按钮为“.”且之前没有输入过“.”,将小数点“.”追加到输入的数据后 if(e.getSource()=bPoint),1,/按钮为运算符 if(e.getSource()=bMulti)|(e.getSource()=bDivision)|(e.getSource()=bPlus)|(e.ge

23、tSource()=bMinus)/如果已有第二运算数则保存当前运算符,进行运算 if(ForeScreen!=)OperatorCurrent=e.getActionCommand();doOperator();/否则(如连续两次输入运算符或输入“=”运算后再输入运算符),保存新输入的运算符到OperatorPre else OperatorPre=e.getActionCommand();return true;,1,4).其他自定义方法,/方法:doForeScreen/功能:每次点击按钮0-9之后将文本追加到变量ForeScreen,并显示在文本框中 public void doFor

24、eScreen(String s)ForeScreen+=s;tfAnswer.setText(ForeScreen);/方法:doClear/功能:点击按钮C后,执行清除文本框和其他存储的变量,回到初始状态 public void doClear()OperatorCurrent=;OperatorPre=;ForeScreen=;BackScreen=;isFloat=false;tfAnswer.setText(ForeScreen);,1,4).其他自定义方法,/方法:doOperator/功能:利用运算数和运算符进行运算以得到结果 public void doOperator()do

25、uble dFore,dBack;Double d;if(OperatorPre.equals()/如果OperatorPre为空(还没有再次输入运算符或“=”),则将当前文本框中的数据保存到BackScreen(第一个运算数),第二运算数置为空BackScreen=ForeScreen;ForeScreen=;tfAnswer.setText(BackScreen);else,1,if(ForeScreen.equals(),1,if(OperatorPre.equals(*)d=new Double(dBack*dFore);tfAnswer.setText(d.toString();if

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号