事件驱动模型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第八章AWT及Applet编程AWTAWT事件驱动模型Applet编程关于课件下载及考试目前新教学楼供电还有问题,暂时HTTP空间工作有问题下一周,也就是第十一周考试,两个教室,一个是目前上课教室,另一个等待通知抽象窗口工具集AWTJava.awt包包括建立GUI所需基本组件。Java.awt的主要类及层次关系ObjectBorderLayoutEventFlowLayoutGridBagLayoutMenuComponentMenuBarMenuItemComponentButtonContainerpanelwindowScrollPane...DialogFrameApplet...容器(container)组件必须放在容器中容器主要包括:窗口(Window,Frame)面板(Panel)ContainerPanelWindowScrollPaneDialogFrameAppletFrame带有标题并可改变大小,可以使用add()方法向Frame中加组件。importjava.awt.*;publicclassMyFrameextendsFrame{publicstaticvoidmain(Stringargs[]){MyFramefr=newMyFrame(“HelloOutThere!”);fr.setSize(500,500);fr.setBackground(color.green);fr.setVisible(true);}publicMyFrame(Stringstr){super(str);}}HelloOutThere!PanelPanel必须放在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);…}FramewithPanelLayoutManager(布局管理器)LayoutManager容器中组件的布局通常由LayoutManager控制。LayoutManager负责决定容器的布局策略及容器内每个组件的大小。每个容器都由一个缺省的LayoutManager,可通过setLayout()方法改变。Java提供的布局管理器FlowLayoutBorderLayoutGridLayoutCardLayoutGridBagLayoutFlowLayoutManager组件采用从左到右,从上到下逐行摆放。FlowLayoutOpenCloseokFlowLayoutOpenCloseokFlowLayout.LEFTFlowLayout.RIGHTFlowLayout.CENTER缺省是居中setLayout(newFlowLayout(intalign,inthgap,intvgap))FlowLayoutManager示例importjava.awt.*;publicclassExGui{privateFramef;privateButtonb1;privateButtonb2;publicstaticvoidmain(Stringargs[]){ExGuiguiwindow=newExGui();guiWindow.go();}publicvoidgo(){f=newFrame(“GUIexample”);f.setLayout(newFlowLayout());b1=newButton(“PressMe”);b2=newButton(“Don’tPressMe“);f.add(b1);f.add(b2);f.pack();f.setVisible(true);}}GUIexamplePressMeDon’tPressMeBorderLayoutManagerBorderLayout分5个区:BorderLayoutNorthWestEastSouthCenterBorderLayoutManager构造与安装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);…Grid123456CardLayoutManager把组件象一系列卡片一样叠放,一个时刻只能看到最上面的。GridBagLayout如何选择布局管理器组件尽量充满容器空间——使用BorderLayout或GridBagLayout组件以自然大小紧凑的在一行中显示——FlowLayout组件大小相同,并且成行或成列显示——GridLayoutGUI的设计步骤先设计一个窗口,如Frame确定布局管理器在窗口中添加所需组件改变组件颜色、字体增加事件处理AWT事件处理模型什么是事件事件处理机制事件目录事件、接口、方法列表多监听器事件适配器Event的含义Events-描述所发生事件的对象Java中有很多不同类型的事件类,用来描述不同类型的用户动作事件源-产生事件的组件事件处理-一个接收事件对象并处理用户交互的方法JDK1.0与JDK1.2~事件处理机制在JDK1.0中采用向上传递机制:FramePanelButtonActionEventJDK1.2中的事件处理机制FramePanelButtonPanelandFrameeventhandlersactionPerformed(ActionEvente){…}Actionevent监听器方式:JDK1.2中的事件处理机制监听器:每个事件有一个相应的监听器接口,定义了接收事件的方法。实现该接口的类,可作为监听器注册。每个组件都注册有一个或多个监听器(类),该监听器包含了能接收和处理事件的事件处理。事件对象只向已注册的监听器报告。JDK1.2中的事件处理机制包含事件处理的程序应该包括以下三部分内容:1.在事件处理类的声明中指定要实现的监听器名,如:publicclassMyClassimplementsActionListener{…}2.实现监听器中的接口,如:publicvoidactionPerformed(ActionEvente){...//响应某个动作的代码...}3.在一个或多个组件上将监听器类的实例注册为监听器,如:someComponent.addActionListener(instanceOfMyClass);示例importjava.awt.*;publicclassTestButton{publicstaticvoidmain(Stringargs[]){Framef=newFrame(“Test”);Buttonb=newButton(“PressMe!”);b.addActionListener(newButtonHandler());f.add(b,“Center”);f.pack();f.setVisible(true);}}importjavaawt.event.*;publicclassButtonHandlerimplementsActionListener{publicvoidactionPerformed(ActionEvente){System.out.println(“Actionoccurred”);System.out.println(“Button’slabelis:”+e.getActionCommand());}}事件分类java.util.EventObjectJava.awt.AWTEventActionEventAdjustmentEventComponentEventItemEventTextEventContainerEventFocusEventInputEventWindowEventJava.beans.beanContext...事件监听器接口java.util.EventListenerActionListener…...ItemListener…事件接口与方法目录ListenerInterfaceAdapterClassMethodsActionListener无actionPerformedAdjustmentListener无adjustmentValueChangedComponentListenerComponentAdaptercomponentHiddencomponentMovedcomponentResizedcomponentShownContainerListenerContainerAdaptercomponentAddedcomponentRemovedFocusListenerFocusAdapterfocusGainedfocusLostItemListener无itemStateChanged事件接口与方法目录ListenerInterfaceAdapterClassMethodsKeyListenerKeyAdapterkeyPressedkeyReleasedkeyTypedMouseListenerMouseAdaptermouseClickedmouseEnteredmouseExitedmousePressedmouseReleasedMouseMotionListenerMouseMotionAdaptermouseDraggedmouseMovedTextListener无textValueChangedWindowListenerWindowAdapterwindowActivatedwindowClosedwindowClosingwindowDeactivatedwindowDeiconifiedwindowIconifiedwindowOpened举例--带有两个监听器的Frame…publicclassTwoListenerimplementsMouseMotionListener,MouseListener{Framef;TextFieldtf;publicstaticvoidmain(Stringargs[]){TwoListenertwo=newTwoListener();two.go();}…多监听器在同一个组件上注册多个监听器。根据需要多次调用addXXXListener()方法注册多个监听器。EventAdaptersAdapter类实现了相应Listener接口,但所有方法体都是空的。用户可以把自己的监听器类声明为adapter类的子类,便可以只重写需要的方法。…publicclassMouseClickHandlerextendsMouseAda

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功