




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章AWT及Applet编程,AWTAWT事件驱动模型Applet编程,关于课件下载及考试,目前新教学楼供电还有问题,暂时HTTP空间工作有问题下一周,也就是第十一周考试,两个教室,一个是目前上课教室,另一个等待通知,抽象窗口工具集AWT,Java.awt包包括建立GUI所需基本组件。Java.awt的主要类及层次关系,容器(container),组件必须放在容器中容器主要包括:窗口(Window,Frame)面板(Panel),Frame,带有标题并可改变大小,可以使用add()方法向Frame中加组件。importjava.awt.*;publicclassMyFrameextendsFramepublicstaticvoidmain(Stringargs)MyFramefr=newMyFrame(“HelloOutThere!”);fr.setSize(500,500);fr.setBackground(color.green);fr.setVisible(true);publicMyFrame(Stringstr)super(str);,Panel,Panel必须放在Window或Frame中。是一块无边框的区域。可以向其中放入基本组件。fr=newFrame(“FramewithPanel”);Panelpan=newPanel();fr.setSize(200,200);fr.setBackground(Color.red);pan.setSize(100,100);pan.setBackground(Color.yellow);fr.add(pan);fr.setVisible(true);,LayoutManager(布局管理器),LayoutManager,容器中组件的布局通常由LayoutManager控制。LayoutManager负责决定容器的布局策略及容器内每个组件的大小。每个容器都由一个缺省的LayoutManager,可通过setLayout()方法改变。Java提供的布局管理器FlowLayoutBorderLayoutGridLayoutCardLayoutGridBagLayout,FlowLayoutManager,组件采用从左到右,从上到下逐行摆放。,FlowLayout.LEFTFlowLayout.RIGHTFlowLayout.CENTER缺省是居中,setLayout(newFlowLayout(intalign,inthgap,intvgap),FlowLayoutManager示例,importjava.awt.*;publicclassExGuiprivateFramef;privateButtonb1;privateButtonb2;publicstaticvoidmain(Stringargs)ExGuiguiwindow=newExGui();guiWindow.go();publicvoidgo()f=newFrame(“GUIexample”);f.setLayout(newFlowLayout();b1=newButton(“PressMe”);b2=newButton(“DontPressMe“);f.add(b1);f.add(b2);f.pack();f.setVisible(true);,BorderLayoutManager,BorderLayout分5个区:,BorderLayout,North,West,East,South,Center,BorderLayoutManager,构造与安装BorderLayout:setLayout(newBorderLayout()-组件间无缝隙setLayout(newBorderLayout(inthgap,intVgap);加入组件:add(button,BorderLayout.CENTER),GridLayoutManager,把窗口分成网格,n行*m列。组件从左到右,从上到下填充。构造与安装布局管理器:setLayout(newGridLayout(introws,intcols);,GridLayoutManager示例,f=newFrame(“Grid”);f.setLayout(newGridlayout(3,2);b1=newButton(“1”);b2=newButton(“2”);b3=newButton(“3”);b4=newButton(“4”);b5=newButton(“5”);b6=newButton(“6”);f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);f.add(b6);f.pack();f.setVisible(true);,CardLayoutManager,把组件象一系列卡片一样叠放,一个时刻只能看到最上面的。,GridBagLayout,如何选择布局管理器,组件尽量充满容器空间使用BorderLayout或GridBagLayout组件以自然大小紧凑的在一行中显示FlowLayout组件大小相同,并且成行或成列显示GridLayout,GUI的设计步骤,先设计一个窗口,如Frame确定布局管理器在窗口中添加所需组件改变组件颜色、字体增加事件处理,AWT事件处理模型,什么是事件事件处理机制事件目录事件、接口、方法列表多监听器事件适配器,Event的含义,Events-描述所发生事件的对象Java中有很多不同类型的事件类,用来描述不同类型的用户动作事件源-产生事件的组件事件处理-一个接收事件对象并处理用户交互的方法,JDK1.0与JDK1.2事件处理机制,在JDK1.0中采用向上传递机制:,Frame,Panel,Button,ActionEvent,JDK1.2中的事件处理机制,Frame,Panel,Button,PanelandFrameeventhandlers,actionPerformed(ActionEvente),Actionevent,监听器方式:,JDK1.2中的事件处理机制,监听器:每个事件有一个相应的监听器接口,定义了接收事件的方法。实现该接口的类,可作为监听器注册。每个组件都注册有一个或多个监听器(类),该监听器包含了能接收和处理事件的事件处理。事件对象只向已注册的监听器报告。,JDK1.2中的事件处理机制,包含事件处理的程序应该包括以下三部分内容:1.在事件处理类的声明中指定要实现的监听器名,如:publicclassMyClassimplementsActionListener2.实现监听器中的接口,如:publicvoidactionPerformed(ActionEvente)./响应某个动作的代码.3.在一个或多个组件上将监听器类的实例注册为监听器,如:someComponent.addActionListener(instanceOfMyClass);,示例,importjava.awt.*;publicclassTestButtonpublicstaticvoidmain(Stringargs)Framef=newFrame(“Test”);Buttonb=newButton(“PressMe!”);b.addActionListener(newButtonHandler();f.add(b,“Center”);f.pack();f.setVisible(true);importjavaawt.event.*;publicclassButtonHandlerimplementsActionListenerpublicvoidactionPerformed(ActionEvente)System.out.println(“Actionoccurred”);System.out.println(“Buttonslabelis:”+e.getActionCommand();,事件分类,事件监听器接口,事件接口与方法目录,事件接口与方法目录,举例-带有两个监听器的Frame,publicclassTwoListenerimplementsMouseMotionListener,MouseListenerFramef;TextFieldtf;publicstaticvoidmain(Stringargs)TwoListenertwo=newTwoListener();two.go();,多监听器,在同一个组件上注册多个监听器。根据需要多次调用addXXXListener()方法注册多个监听器。,EventAdapters,Adapter类实现了相应Listener接口,但所有方法体都是空的。用户可以把自己的监听器类声明为adapter类的子类,便可以只重写需要的方法。publicclassMouseClickHandlerextendsMouseAdapterpublicvoidmouseClicked(MouseEvente).,使用内部类进行事件处理,既使用Adaptor类,又避免多重继承的限制。在一个类中定义内部类,由内部类继承相应Adaptor类。例:publicclassMyClassextendsApplet.someObject.addMouseListener(newMyAdapter();.classMyAdapterextendsMouseAdapterpublicvoidmouseClicked(MouseEvente)./Eventhandlerimplementationgoeshere.,使用内部类进行事件处理,匿名类(AnonymousClass)是没有名字的类。可以使用匿名内部类进行事件处理。publicclassMyClassextendsApplet.someObject.addMouseListener(newMouseAdapter()publicvoidmouseClicked(MouseEvente)./Eventhandlerimplementationgoeshere.);.,AWT组件类库,Component类提供的功能,支持基本的drawing。paint(),update(),repaint()方法显示组件自身。事件处理。通用的事件处理方法:handleEvent();特定的事件处理方法,如action()组件外观控制字体、颜色图象处理Canvases以及多数container能够显示图象屏幕上组件大小与位置控制preferredSize(),minimumSize()方法可以通知布局管理器组件的最佳与最小的大小,Applet,Applet基本概念编写Applet在HTML页中包含AppletApplet中的事件处理Applet的重要成员方法,什么是Applet,是能够嵌入到HTML页面中,并可以下载到浏览器中运行的Java类与Application的区别在于运行方式上Application以main()函数为入口点运行Applet要在浏览器中运行,运行过程相对复杂,Applet加载过程,Http:/someLocation/hello.html,AppletClasses,HelloWorld!,Http:/someLocation/hello.html,Location:,Loading.,1.Browser加载URL,2.Browser加载HTMLdocument,3.Browser加载appletclasses,4.Browser运行applet,Browser,Applet安全限制,大多数浏览器对Applet进行以下约束运行时刻不能运行该Applet之外的其它程序。禁止调用本机方法。禁止向本地文件系统I/O。禁止向提供Applet之外的主机建立Socket。从JDK1.1开始,Java沙箱引入了签名信任技术。,Applet类层次,编写Applet的过程,HelloWorldapplet:importjava.awt.*;importjava.applet.*;publicclassHelloWorldextendsAppletpublicvoidpaint(Graphicsg)g.drawString(“HelloWorld!”,25,25);,编写Applet的过程,引入所需的JavaAPI包;将要显示的applet定义成Java.applet.Applet类的子类;实现Applet的某些方法;运行applet,将applet嵌入html文件:ASimpleProgram,Applet的生命周期,加载applet创建applet的实例applet自身初始化applet开始运行离开和返回Applet所在的页面Applet停止/applet开始运行重新加载Applet退出浏览器停止运行并释放所有资源。,关键Applet方法,publicclassSimpleextendsApplet.publicvoidinit().publicvoidstart().publicvoidstop().publicvoiddestroy().,关键Applet方法,init()Applet加载(重加载)时,首先调用方法,执行基本初始化,如设置Layout,数据初始化等。start()开始Applet的执行,使Applet成为激活状态。在加载Applet或每次显示该applet时都要调用。stop()停止Applet的运行。当离开该Applet所在的页面或关闭浏览器时调用。Applet可调用该方法停止线程。destroy()关闭浏览器时彻底终止Applet,为卸载Applet做最终清理。,Applet生命周期,Init,Start,Stop,Destroy,装载Applet,重新装入或改变浏览器大小或返回Web页,离开Web页,Applet的显示,Applet本质上是图形方式。当Applet每次刷新其显示时,浏览器都调用paint()方法。paint()把java.awt.Graphics类的实例作为参数。该实例包含了Applet所在Panel的图形上下文信息。,Applet显示的相关方法,paint(Graphicsg)向Applet中画图、画图象,显示字符串。当Applet初次显示或更新时,都将调用该方法。repaint()调用该方法将通知系统改变显示,系统将调
温馨提示
- 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-2026学年初中主题班会
- 2025版集团内部无息借款资金调度与管理合同范本
- 管道吊装方案范本
- 黑龙江省五大连池市2025年上半年事业单位公开招聘试题含答案分析
- 小学英语课堂教学规范操作手册
- 人事经理工作汇报
- 项目实施进程汇报
- 2025学宪法讲宪法知识竞赛题库及答案(小学组)
- 中小企业网络安全解决方案概述
- 官方兽医考试题及完整答案详解(名校卷)
评论
0/150
提交评论