事件驱动模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GUI example Press Me Don’t Press Me
Border Layout Manager
Border LayoΒιβλιοθήκη Baidut 分5个区:
BorderLayout North
West Center East
South
Border Layout Manager
构造与安装Border Layout: setLayout(new BorderLayout( )) -组件 间无缝隙 setLayout(new BorderLayout( int hgap, int Vgap));
Object BorderLayout Event FlowLayout GridBagLayout MenuComponent Component ...
MenuBar MenuItem Applet panel Button Dialog Container window Frame ... ScrollPane
监听器方式:
Frame Panel Button Panel and Frame event handlers Action event
actionPerformed( ActionEvent e) { … }
JDK1.2中的事件处理机制
监听器:每个事件有一个相应的监听器接口, 定义了接收 事件的方法。实现该接口的类, 可作为监听器注册。
Grid
1 3 2 4 6
5
Card Layout Manager
把组件象一系列卡片一样叠放,一个时刻只 能看到最上面的。
GridBag Layout
如何选择布局管理器
组件尽量充满容器空间——使用 BorderLayout或GridBagLayout 组件以自然大小紧凑的在一行中显示—— FlowLayout 组件大小相同,并且成行或成列显示—— GridLayout
Panel
Panel 必须放在Window 或Frame中。 是一块无边框的区域。 可以向其中放入基本组件。 „ fr=new Frame(“Frame with Panel”); Panel pan = new Panel( ); fr.setSize(200,200); fr.setBackground(Color.red); pan.setSize(100,100); pan.setBackground(Color.yellow); fr.add(pan); fr.setVisible(true); „ }
加入组件:
add(button, BorderLayout.CENTER)
Grid Layout Manager
把窗口分成网格,n行*m列。组件从左到右, 从上到下填充。 构造与安装布局管理器:setLayout(new GridLayout(int rows, int cols));
ContainerListener FocusListener ItemListener
ContainerAdapter FocusAdapter
无
事件接口与方法目录
Listener Interface
KeyListener
Adapter Class
KeyAdapter
Methods
keyPressed keyReleased keyTyped mouseClicked mouseEntered mouseExited mousePressed mouseReleased mouseDragged mouseMoved textValueChanged windowActivated windowClosed windowClosing windowDeactivated windowDeiconified windowIconified windowOpened
Flow Layout Manager示例
import java.awt.* ; public class ExGui { private Frame f ; private Button b1 ; private Button b2 ; public static void main( String args[ ] ) { ExGui guiwindow = new ExGui( ); guiWindow.go( ) ; } public void go( ) { f = new Frame(“GUI example”) ; f.setLayout( new Flow Layout( )) ; b1 = new Button(“Press Me”); b2 = new Button(“Don’t Press Me “); f.add( b1) ; f.add(b2); f.pack( ); f.setVisible(true) ; } }
Flow Layout Border Layout Grid Layout Card Layout GridBag Layout
Flow Layout Manager
组件采用从左到右,从上到下逐行摆放。
Flow Layout Flow Layout
Open
Close
Open
Close
ok
ok
setLayout(new FlowLayout(int align,int hgap, int vgap)) FlowLayout.LEFT FlowLayout.RIGHT FlowLayout.CENTER 缺省是居中
Java中有很多不同类型的事件类,用来描述不 同类型的用户动作
事件源 - 产生事件的组件 事件处理 - 一个接收事件对象并处理用户交 互的方法
JDK1.0 与JDK1.2~事件处理机制
在JDK1.0中采用向上传递机制: Frame
Panel
Button
ActionEvent
JDK1.2中的事件处理机制
Adapter Class
无 无
ComponentAdapter
Methods
actionPerformed adjustmentValueChange d componentHidden componentMoved componentResized componentShown componentAdded componentRemoved focusGained focusLost itemStateChanged
容器(container)
组件必须放在容器中 容器主要包括:
窗口(Window, Frame) 面板 (Panel)
Panel Applet Dialog
Container Window Frame ScrollPane
Frame
带有标题并可改变大小,可以使用add( )方法向Frame中加组件。 import java.awt.*; public class MyFrame extends Frame { public static void main(String args[ ]) { MyFrame fr = new MyFrame(“Hello Out There!”); fr.setSize(500,500); fr.setBackground(color.green); fr.setVisible(true); Hello Out There! } public MyFrame(String str) { super(str); } }
事件分类
java.util.EventObject Java.awt.AWTEvent ActionEvent AdjustmentEvent ComponentEvent ItemEvent TextEvent ContainerEvent FocusEvent InputEvent WindowEvent
示例
import java.awt.*; public class TestButton { public static void main(String args[ ]) { Frame f = new Frame(“Test”); Button b = new Button(“Press Me!”); b.addActionListener(new ButtonHandler( )); f.add(b, “Center”); f.pack( ); f.setVisible(true) ; } } import java awt.event.* ; public class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println(“Action occurred”); System.out.println(“Button’s label is:”+e.getActionCommand()); } }
Java.beans.beanContext
...
事件监听器接口
java.util.EventListener ActionListener … ... ItemListener …
事件接口与方法目录
Listener Interface
ActionListener AdjustmentListener ComponentListener
GUI的设计步骤
先设计一个窗口,如Frame 确定布局管理器 在窗口中添加所需组件 改变组件颜色、字体 增加事件处理
AWT事件处理模型
什么是事件 事件处理机制 事件目录 事件、接口、方法列表 多监听器 事件适配器
Event的含义
Events - 描述所发生事件的对象
Grid Layout Manager 示例
… f = new Frame(“Grid”) ; f.setLayout(new Gridlayout(3,2)) ; b1 = new Button(“1”) ; b2 = new Button(“2”); b3 = new Button(“3”); b4 = new Button(“4”); b5 = new Button(“5”); b6 = new Button(“6”); f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5); f.add(b6); f.pack( ) ; f.setVisible(true) ; …
每个组件都注册有一个或多个监听器(类), 该监听器包含了能接收和处理事件的事件处 理。 事件对象只向已注册的监听器报告。
JDK1.2中的事件处理机制
包含事件处理的程序应该包括以下三部分内容: 1.在事件处理类的声明中指定要实现的监听器名,如: public class MyClass implements ActionListener { … } 2.实现监听器中的接口,如: public void actionPerformed(ActionEvent e) { ...//响应某个动作的代码... } 3.在一个或多个组件上将监听器类的实例注册为监听器,如: someComponent.addActionListener(instanceOfMyClass);
Frame with Panel
Layout Manager(布局管理器)
Layout Manager
容器中组件的布局通常由Layout Manager控制。 Layout Manager负责决定容器的布局策略及容器内 每个组件的大小。 每个容器都由一个缺省的Layout Manager ,可通 过setLayout( )方法改变。 Java提供的布局管理器
第八章 AWT 及Applet 编程
AWT AWT 事件驱动模型 Applet 编程
关于课件下载及考试
目前新教学楼供电还有问题,暂时HTTP空 间工作有问题 下一周,也就是第十一周考试,两个教室, 一个是目前上课教室,另一个等待通知
抽象窗口工具集AWT
Java.awt包包括建立GUI所需基本组件。 Java.awt的主要类及层次关系