第9章 处理AWT事件

合集下载

AWT事件处理机制

AWT事件处理机制
AWT事件处理机制 AWT事件处理机制
Java事件
AWT事件处理机制
ActionEvent
button Frame
ActionPerformed(ActionEvent )
事件源
监听器
AWT事件处理机制
//: Button1.java // Putting buttons on an applet import java.awt.*; import java.applet.*; public class Button1 extends Applet { Button b1 = new Button("Button 1"), b2 = new Button("Button 2"); public void init() { add(b1); add(b2); } } ///:~
层次模型(JDK1.0)
这种模型有一个显著的优点: 它简单,而且非常适合面向对象的编程环境; 说到底,所有的组件都继承了ponent类, 而handleEvent()就在ponent类中。 然而,这种模型也存在缺点: 事件只能由产生这个事件的组件或包含这个组 件的容器处理。这个限制违反了面向对象编程的一个 基本原则:功能应该包含在最合适的类中。而最适合 处理事件的类往往并不是源组件的容器层次中的成员。 大量的CPU周期浪费在处理不相关的事件上。任何对 于程序来说不相关或者并不重要的事件会沿容器层次 一路传播,直到最后被抛弃。不存在一种简单的方法 来过滤事件。
Methods actionPerformed(Actio nEvent) itemStateChanged(Item Event) mouseDragged(MouseEve nt) mouseMoved(MouseEvent) mousePressed(MouseEve nt) mouseReleased(MouseEv ent) mouseEntered(MouseEve nt) mouseExited(MouseEven t) mouseClicked(MouseEve nt) keyPressed(KeyEvent)

AWT事件处理

AWT事件处理

• import java.awt.*; • import java.awt.event.*; • public class TestFrame{ • public static void main(String[] args){ • Frame f = new Frame("清华 IT 教育网 "); • f.setSize(300,300); • f.setVisible(true); • f.addWindowListener(new MyWindowListener()); • } • }
AWT事件处理(4)--事件监听器(1)
• 每类事件都有对应的事件监听器,监听器是 接口,根据动作来定义方法。 • AWT的组件类中提供注册和注销监听器的方 法: 注册监听器: 注册监听器: public void add<ListenerType> (<ListenerType>listener); 注销监听器: 注销监听器: public void remove<ListenerType> (<ListenerTypeListener implements WindowListener{ • public void windowClosing(WindowEvent e){ • e.getWindow().setVisible(false); • ((Window)e.getComponent()).dispose(); • System.exit(0); • } • public void windowActivated(WindowEvent e){} • public void windowClosed(WindowEvent e) {} • public void windowDeactivated(WindowEvent e) {} • public void windowDeiconified(WindowEvent e) {} public void windowIconified(WindowEvent e) {} • public void windowOpened(WindowEvent e) {} • }

JavaAWT事件处理精品PPT课件

JavaAWT事件处理精品PPT课件

setBackground(Color.white);
setResizable(false);
setVisible(true);
setLayout(new FlowLayout());
add(btnChange);
btnChange.addActionListener(this); //③将窗口注册为btnChange的监听器
import java.awt.*;
class MyFrame extends Frame
{
Button btnChange=new Button("变色");
MyFrame(String s)
{
super(s);
setSize(300,200);
setBackground(Color.white);
事件源
产生事件 的类型
监听器接口
Button ActionEvent ActionListener
监听器接口提供的方法
actionPerformed(ActionEvent e)
CheckBox ItemEvent ItemListener
itemStateChange(ItemEvent e)
TextField Window
{
MyFrame myFrm=new MyFrame("变色窗口");
}
}
11.10.2020
5
单击按钮——触发ActionEvent事件
根据事件源——按钮对象 确定监听器——窗口对象
通常选取包含“事件源”的对象来担任 因:单击按钮会触发ActionEvent事件,该事件由
ActionListener接口来监听。 则:注册监听器

AWT事件处理

AWT事件处理

Java AWT事件处理1 AWT事件处理基本概念AWT事件处理的过程中,主要涉及3类对象。

(1) Event(事件):用户对组件的一个操作,称之为一个事件,以类的形式出现,例如,键盘操作对应的事件类是KeyEvent。

其实例在改事件发生时有系统自动产生。

(2) Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮Button。

(3) Event Monitor(事件监听器):接收事件对象并对其进行处理的类的对象,通常其中某个成员方法对事件进行相应的处理。

事件委托处理模型图10-10 事件委托处理模型Java采取了事件委托处理模型(Delegation Model),事件源自己不处理事件,而是把在其自身所有可能发生的事件委托给事件监听器来处理。

比如,在Canvas对象上既可能发生鼠标事件,也可能发生键盘事件,该Canvas对象就可以委托给事件监听器1来处理鼠标事件,同时委托给事件监听器2来处理键盘事件。

委托模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。

2 事件事件分类。

按事件的性质分类java.util.EventObject类是所有事件对象的基础父类,所有事件都是由它派生出来的。

AWT的相关事件继承于java.awt.AWTEvent类,这些AWT事件分为两大类:低级事件和高级事件。

(1)低级事件低级事件是指基于组件和容器的事件,当一个组件上发生事件,如鼠标的进入、点击、拖放等,或组件的窗口开关等时,触发了组件事件。

—ComponentEvent(组件事件:组件尺寸的变化、移动);—ContainerEvent(容器事件:组件增加、移动);—WindowEvent(窗口事件:关闭窗口、窗口闭合、图标化);—FocusEvent(焦点事件:焦点的获得和丢失);—KeyEvent(键盘事件:键按下、释放);—MouseEvent(鼠标事件:鼠标单击、移动)。

AWT事件处理机制

AWT事件处理机制

AWT事件处理机制在事件处理的过程中主要涉及3类对象1.事件,⽤户对界⾯操作在Java语⾔上的描述以类的形式出现,例如键盘操作对应的事件类是KeyEvent2.事件源,事件发⽣的场所,通常是各个组件,例如按钮Button3.事件处理者,接收事件对象并对其进⾏处理的对象同⼀个事件源可能发⽣多种事件,所以Java采取授权处理机制,事件源把⾃⾝可能发⽣的事件分别授权给不同的事件处理者进⾏处理。

有时也将事件处理者称为监听器,因为监听器时刻监听事件源发⽣的事件类型,如果该事件类型与⾃⼰所负责处理的事件类型⼀致,就马上进⾏处理授权模型把事件的处理委托给外部处理实体进⾏处理,实现将事件源和监听器分开的机制。

事件处理者(监听器)通常是⼀个类,该类如果能够处理某种类型的事件,就必须实现与该事件类型相对应的接⼝import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class ep2_6 {public static void main (String[] args){Frame f=new Frame();Button b1=new Button("1");b1.addActionListener(new ButtonHandler());//注册监听器进⾏授权,该⽅法参数是事件处理对象f.setLayout(new FlowLayout());f.add(b1);f.setSize(100, 100);f.setVisible(true);}class ButtonHandler1 implements ActionListener//实现接⼝ActionListener才能做事件ActionEventd的处理者{public void actionPerformed1(ActionEvent e)//系统产⽣的ActionEvent事件对象被当作参数传递给该⽅法{System.out.println("处理");}@Overridepublic void actionPerformed(ActionEvent e) {// TODO ⾃动⽣成的⽅法存根}}}。

掌握AWT的常用基本组件的使用及其事件响应处理.

掌握AWT的常用基本组件的使用及其事件响应处理.

掌握AWT的常用基本组件的使用及其事件响应处理一、试验目的:掌握AWT的常用基本组件的使用及其事件响应处理二、试验任务:编程实现一个学生信息管理系统的图形界面。

需要录入的信息包括学号、姓名、性别、出生日期、是否联合培养等。

根据这些信息的性质选择使用不同的图形组件来设计界面。

为上题增加事件处理的功能,当用户选定了某一个出生月份,如3月份时,系统自动的把选择范围限制在1-31之间,当用户单击“录入”按钮时,系统把所有的学生信息打印在屏幕上,或输出到某个文件中保存。

二、实验步骤:1.具体程序如下import java.awt.*;import java.awt.Panel.*;import java.awt.Choice.*;import java.awt.event.*;import java.awt.event.ItemListener.*;public class as{private Frame f=new Frame("学生信息管理系统");private Panel p1=new Panel();private Panel p11=new Panel();private Panel p12=new Panel();private Panel p2=new Panel();private Panel p21=new Panel();private Choice ca=new Choice();private Choice cab=new Choice();private Choice cac=new Choice();private Panel p30=new Panel();private Panel p3=new Panel();private Panel p5=new Panel ();private Panel p6=new Panel ();private Button b1=new Button(" 提交");private Button b2=new Button("重写");private TextArea t=new TextArea();private TextField t1=new TextField(10);private TextField t2=new TextField(10);private TextField t3=new TextField(40);private Choice c=new Choice();CheckboxGroup bb=new CheckboxGroup();CheckboxGroup bb1=new CheckboxGroup();Checkbox ch1=new Checkbox("是",bb1,true);Checkbox ch2=new Checkbox("否",bb1,true);Checkbox che1=new Checkbox("男",bb,true);Checkbox che2=new Checkbox("女",bb,false);Checkbox chb1=new Checkbox("篮球");Checkbox chb2=new Checkbox("足球");Checkbox chb3=new Checkbox("游泳");Checkbox chb4=new Checkbox("溜冰");private int ia=1;public as(){f.setLayout(new FlowLayout(FlowLayout.CENTER));//添加布局管理器//注册监视器f.addWindowListener(new WindowClosing());b1.addActionListener(new ButtonHandler());b2.addActionListener(new ButtonHandler());ca.addItemListener(new ItemSelect());cab.addItemListener(new ItemSelect());t1.setEditable(true);//添加“姓名”f.add(p1);p1.add(new Label("姓名"));p1.add(t1);//添加“学号”f.add(p11);p11.add(new Label(" 学号"));p11.add(t2);//添加“家庭住址”f.add(p12);p12.add(new Label("家庭住址:")); p12.add(t3);//添加“性别”f.add(p2);p2.add(new Label("性别"));p2.add(che1);p2.add(che2);//添加出生日期f.add(p21);p21.add(new Label("出生日期")); int i1=1950,i2,i,j;String ss;for(i=0;i<100;i++){i2=i1+i;ss=String.valueOf(i2);ca.addItem(ss);}p21.add(ca);p21.add(new Label("年"));for(i=1;i<=12;i++){ss=String.valueOf(i);cab.addItem(ss);}p21.add(cab);p21.add(new Label("月"));for(i=1;i<=31;i++){ss=String.valueOf(i);cac.addItem(ss);}p21.add(cac);p21.add(new Label("日"));//添加是否联合培养f.add(p30);p30.add(new Label("是否联合培养?"));p30.add(ch1);p30.add(ch2);//添加个人爱好f.add(p3);p3.add(new Label("最喜欢什么体育活动?")); p3.add(chb1);p3.add(chb2);p3.add(chb3);p3.add(chb4);//安装按钮“提交”与“重写”f.add(p6);p6.add(b1);p6.add(b2);//f.add(p5);p5.add(new Label("改生基本情况"));f.add(t);//f.setSize(450,500);f.setVisible(true);}class ButtonHandler implements ActionListener{public void actionPerformed(ActionEvent e){String s1,s2,s3,s4,s5,s6;String checkbox="",check="",cha1="",cha2="",cha3="",cha4="";if(e.getSource()==b1){s4=ca.getSelectedItem();s5=cab.getSelectedItem();s6=cac.getSelectedItem();if(ch1.getState()==true){checkbox=ch1.getLabel();}if(ch2.getState()==true){checkbox=ch2.getLabel();}if(che1.getState()==true){check=che1.getLabel();}if(che2.getState()==true){check=che2.getLabel();}if(chb1.getState()==true){cha1=chb1.getLabel();}if(chb2.getState()==true){cha2=chb2.getLabel();}if(chb3.getState()==true){cha3=chb3.getLabel();}if(chb4.getState()==true){cha4=chb4.getLabel();}s1=t1.getText();s2=t2.getText();s3=t3.getText();t.append("姓名:"+s1+"\r\n");t.append("学号:"+s2+"\r\n");t.append("性别:"+check+"\r\n");t.append("家庭住址:"+s3+"\r\n");t.append("出生日期:"+s4+" 年"+s5+" 月"+s6+" 日"+"\r\n");t.append("是否联合培养?:"+checkbox+"\r\n");t.append("最喜欢的运动:"+cha1+" "+cha2+" "+cha3+" "+cha4+"\r\n");}if(e.getSource()==b2){t1.setText("");t2.setText("");t3.setText("");t.setText("");}}};class ItemSelect implements ItemListener{public void itemStateChanged(ItemEvent e){int ib=0;if(e.getSource()==ca){ia=((java.awt.Choice)e.getSource()).getSelectedIndex();}if(e.getSource()==cab){int id=((java.awt.Choice)e.getSource()).getSelectedIndex()+1;String ss;int m;switch(id){case 1:case 3:case 5:case 7:case 8:case 10:case 12:{for(m=1;m<=31;m++){ss=String.valueOf(m);cac.addItem(ss);}break;}case 4:case 6:case 9:case 11:{for(m=1;m<=30;m++){ss=String.valueOf(m);cac.addItem(ss);}break;}case 2:{int iq=(1950+ia)%4;int iw=(1950+ia)%400;if((iq==0)&&(iw!=0))ib=1;else ib=0;for(m=1;m<=(28+ib);m++){ss=String.valueOf(m);cac.addItem(ss);}break;}}}}};class WindowClosing extends WindowAdapter {public void windowClosing(WindowEvent e) {System.exit(0);}};public static void main(String[] args){as ti=new as();}}2,实验结果:实验结果:。

第九章 AWT与事件处理

第九章 AWT与事件处理

改变窗口大小
IBM Software Institute
BorderLayout
区域布局将容器空间分为东西南北中五个区域,加 入组件时,应通过字符串“East”、“West”、 “South”、“North”、“Center”来标记组件的 方位
改变窗口大小
IBM Software Institute
IBM Software Institute
“组件”(Component)和“容器”(Container)
Java组织窗口元素是通过“组件”(Component)和 “容器”(Container)来进行的 “组件”包括屏幕上的各种组成部件,如按钮、菜 单、画布等 “容器”则是一种特殊的组件,用来放置、容纳其 它组件或容器,如面板、对话框等
IBM Software Institute
AWT组件——按钮(Button)
按钮是常用的功能组件,表示按钮的类为Button, 创建方法为:
Button btn = new Button(“OK”);
可通过getLabel()和setLabel()方法读取和设置按 钮文字,可产生ActionEvent事件。
事件类型 事件名称 ComponentEvent ContainerEvent FocusEvent low-level InputEvent KeyEvent MouseEvent WindowEvent ActionEvent semantic AdjustmentEvent ItemEvent TextEvent 事件说明 组件事件 窗口事件 焦点事件 输入事件 键盘事件 鼠标事件 窗口事件 运作命令事件 数值调整事件 选项事件 文本事件 引发情况 组件移动,组件大小变化 窗口内组件的添加,删除 窗口激活,拖动滚动条 键盘输入,鼠标操作 某键按下,某键松开 鼠标移动,鼠标按下 窗口关闭,窗口图标化等 选中菜单,按下按钮等 滚动条位置改变 列表框,选择框等选项选中,撤销选择 文本框输入,修改等

第9章 GUI_补充案例

第9章 GUI_补充案例

第九章GUI案例9-1 AWT事件处理机制一、案例描述1、考核知识点编号:00109002名称:AWT事件处理机制2、练习目标掌握如何使用AWT事件处理机制3、需求分析事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。

为了让初学者熟悉AWT的事件处理机制,本案例将实现关闭一个窗口的功能。

4、设计思路(实现原理)1)编写类Example012)建立一个窗体,名为“第一个窗体”3)定义一个类MyWindowListener实现事件监听器的接口WindowListener。

4)通过addWindowListener()方法为事件源注册事件监听器对象。

二、案例实现import java.awt.*;import java.awt.event.*;public class Example01 {public static void main(String[] args) {// 建立新窗体Frame f = new Frame("第一个窗体!");// 设置窗体的宽和高f.setSize(300, 300);// 设置窗体的出现的位置f.setLocation(300, 200);// 设置窗体可见f.setVisible(true);// 为窗口组件注册监听器MyWindowListener mw=new MyWindowListener();f.addWindowListener(mw);}}// 创建MyWindowListener类实现WindowListener接口class MyWindowListener implements WindowListener {// 监听器监听事件对象作出处理public void windowClosing(WindowEvent e) {Window window = e.getWindow();window.setVisible(false);// 释放窗口window.dispose();}public void windowActivated(WindowEvent e) {}public void windowClosed(WindowEvent e) {}public void windowDeactivated(WindowEvent e) {}public void windowDeiconified(WindowEvent e) {}public void windowIconified(WindowEvent e) {}public void windowOpened(WindowEvent e) {}}运行结果如图9-1所示。

java第9章图形界面设计

java第9章图形界面设计

AWT图形界面设计 第一部分 AWT图形界面设计
三、LayoutManager 布局管理器 java为了实现跨平台的特性并且获得动态的布局效果, 为了实现跨平台的特性并且获得动态的布局效果, 为了实现跨平台的特性并且获得动态的布局效果 java将容器内的所有组件安排给一个“布局管理器”负责管理, 将容器内的所有组件安排给一个“ 将容器内的所有组件安排给一个 布局管理器”负责管理, 排列顺序,组件的大小、位置, 如:排列顺序,组件的大小、位置,当窗口移动或调整大小后 组件如何变化等功能授权给对应的容器布局管理器来管理, 组件如何变化等功能授权给对应的容器布局管理器来管理,不 同的布局管理器使用不同算法和策略, 同的布局管理器使用不同算法和策略,容器可以通过选择不同 的布局管理器来决定布局。 的布局管理器来决定布局。 布局管理器主要包括: 布局管理器主要包括:FlowLayout,BorderLayout, , , GridLayout,CardLayout,GridBagLayout , , 例子: 例子:ExGui.java
AWT图形界面设计 第一部分 AWT图形界面设计
2. BorderLayout边界布局 边界布局 BorderLayout 是Window,Frame和Dialog的缺省布局管理器。 的缺省布局管理器。 , 和 的缺省布局管理器 BorderLayout布局管理器把容器分成 个区域:North,South, 布局管理器把容器分成5个区域 布局管理器把容器分成 个区域: , , East,West和Center,每个区域只能放置一个组件。各个区域的位 , 和 ,每个区域只能放置一个组件。 置及大小如下图所示: 置及大小如下图所示:
AWT图形界面设计 第一部分 AWT图形界面设计

第9章 处理AWT事件

第9章 处理AWT事件

16
9.7 Adapter类
由于实现接口要求必须重写所有抽象方法,而往 往我们并不是所有的方法都需要,如上面的例 子,我们只用了7个方法中的一个,但其它6 子,我们只用了7个方法中的一个,但其它6个方 法还必须都写到程序中,显得非常麻烦.Java为 法还必须都写到程序中,显得非常麻烦.Java为 我们提供了一个非常好的方法来解决这个问题, 就是使用事件适配器.
8
9.4 鼠标事件
MouseListener中的5个方法 public void mousePressed(MouseEvent e) public void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e)
ቤተ መጻሕፍቲ ባይዱ
9
9.4 鼠标事件
MouseMotionListener public void mouseDragged(MouseEvent e) public void mouseMoved(MouseEvent e)
10
9.4 鼠标事件
MouseEvent类的方法 getX():返回鼠标事件发生时坐标点的X值 getY():返回鼠标事件发生时坐标点的Y值 getPoint():返回Point对象 getClickCount():得到鼠标点击的次数 getClickCount(): translatePoint():将鼠标事件发生点的坐标平移 setCursor():设置鼠标指针的形状
4
9.1 事件简介
5

第9章组件及事件处理

第9章组件及事件处理
在JFrame对象实例中可能发生窗口事件(例如,鼠标、 键盘点击)。
§9.2.1 JFrame常用方法
public void setBounds(int a,int b,int width,int height 设
置窗口的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是 width,高是height。
容器面板后,再添加到框架Frame的默认内容面板。
9.2.2 菜单
• 菜单显示项目列表,指明各种任务。 • 选择或单击某个选项时会打开另一个列表或子
菜单。 • Swing 菜单由菜单栏、菜单和菜单项构成。 • 菜单栏是所有菜单和菜单项的根
JMenuBar组件(类)
JMenuBar 是可通过 JFrame、JWindow 或 JInternalFrame 的根窗格添加至容器的组件。
public void setSize(int width,int height) 设置窗口的大小。 public void setLocation(int x,int y) 设置窗口的位置,默认位置是
(0,0)。
public void setVisible(boolean b) 设置窗口是否可见,窗口默认是不
法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。
实验任务1:
阅读教材例子1: 编写程序:
JPanel类
JPanel是其中最有代表性、最为常用的普通容器,它 只是在界面上圈定一个矩形范围而无明显标记,主要 的用途是作内容面板或者为了更好地实现布局效果而 作为中间容器。
JPanel一般不处理事件。 JPanel的缺省布局为 FlowLayout(组件的排列方式) JPanel 具有下列构造函数:

AWT及AWT事件处理

AWT及AWT事件处理

常用的组件包括:按钮 常用的组件包括:按钮(Button)、复选框 、复选框(Checkbox) 下拉菜单(Choice)、框架 下拉菜单 、框架(Frame)、标签 、标签(label)、列表 、 (List)、面板 、面板(Panel)、文本区 、文本区(TextArea)、文本域 、 (TextField)、对话框 、对话框(Dialog)。 。 【注】 组成GUI的组件,不能独立使用,必须放在容器内。 的组件, 组成 的组件 不能独立使用,必须放在容器内。 8.2.2 容器(Container) 容器( ) 容器是Component的抽象类的一个子类。一个容器可 的抽象类的一个子类。 容器是 的抽象类的一个子类 以容纳多个组件,并使它们称为一个整体。 以容纳多个组件,并使它们称为一个整体。 使用容器可以简化图形界面的设计, 使用容器可以简化图形界面的设计,以整体结构来布 置 界面。容器本身也是一个组件,具有组件的所有性质, 界面。容器本身也是一个组件,具有组件的所有性质,另 外还有容纳其他组件的功能。 外还有容纳其他组件的功能。
有三种类型的容器:Window,Panel,ScrollPane. 有三种类型的容器 所有的组件都可以通过add()方法向容器中添加组件。 方法向容器中添加组件。 所有的组件都可以通过 方法向容器中添加组件 1.Frame(框架) (框架) Frame可以作为 可以作为Java的顶级窗口使用,它是 的顶级窗口使用, 可以作为 的顶级窗口使用 Windows类的子类,带有标题并可改变大小。 类的子类, 类的子类 带有标题并可改变大小。 Frame类的构造方法有: 类的构造方法有: 类的构造方法有 Frame(); Frame(String title); Frame类的常用方法: 类的常用方法: 类的常用方法 setSize(int , int); setBackground(Color c); setResizable(boolean resizable); setVisible(boolean b);

描述awt事件处理机制

描述awt事件处理机制

描述awt事件处理机制AWT(Abstract Window Toolkit)是Java的原始图形用户界面工具包,提供了一种供开发人员创建GUI应用程序的方法。

AWT事件处理机制允许开发人员对用户界面中的事件进行响应和处理。

AWT事件处理机制包括以下关键组件:1. 事件对象(Event objects):事件对象代表了用户界面中发生的事件,例如按钮点击、鼠标移动等。

每种类型的事件都有对应的事件对象。

2. 事件源(Event source):事件源是触发事件的组件,例如按钮、文本框等。

当事件发生时,事件源会创建一个事件对象并通过调用监听器的方法将事件对象传递给监听器。

3. 监听器(Listener):监听器是一个接口,定义了一种特定类型的事件处理方法。

开发人员可以为每种类型的事件创建一个监听器,并实现对应的事件处理方法。

4. 注册监听器(Registering listeners):开发人员需要将监听器注册到事件源上,以便在事件发生时能够接收到事件对象。

通常,通过调用事件源的`addXXXListener()`方法来注册监听器。

5. 事件分发器(Event dispatcher):事件分发器负责将事件对象传递给正确的监听器。

当事件发生时,事件源会将事件对象传递给事件分发器,然后事件分发器将根据事件类型寻找相应的监听器,并调用相应的事件处理方法。

6. 事件处理方法(Event handling methods):监听器的事件处理方法用于处理特定类型的事件。

开发人员需要实现这些方法以定义事件发生时的响应行为。

总结起来,AWT事件处理机制的基本流程如下:1. 开发人员创建一个或多个监听器,并实现相应的事件处理方法。

2. 开发人员将监听器注册到所需的事件源上,以便在事件发生时能够接收到事件对象。

3. 当事件发生时,事件源会创建一个事件对象,并将其传递给事件分发器。

4. 事件分发器根据事件类型寻找相应的监听器,并调用监听器的事件处理方法。

awt事件处理机制

awt事件处理机制

awt事件处理机制AWT(Abstract Window Toolkit)事件处理机制是Java程序中用于处理用户交互事件的一种机制。

AWT是Java的一个GUI工具包,提供了创建和管理用户界面组件的类和方法。

AWT事件处理机制是基于事件驱动的,当用户与程序的界面交互时,会产生各种事件,例如鼠标点击、按键按下等。

AWT事件处理机制通过监听器(Listener)来捕获和处理这些事件。

在AWT事件处理机制中,需要以下三个主要的参与者:1. 事件源(Event Source):即产生事件的对象,例如按钮、文本框等。

事件源通过注册监听器来确保能够接收到相关事件。

2. 监听器(Listener):监听器是一个接口,定义了处理事件的方法。

事件源注册监听器后,当事件发生时,会通知监听器执行相应的处理方法。

3. 事件处理器(Event Handler):事件处理器是实现了监听器接口的类,负责实现监听器中的方法。

它接收到事件后,根据事件类型进行相应的处理。

使用AWT事件处理机制的一般步骤如下:1. 创建事件源对象,并注册监听器。

2. 实现监听器接口,定义处理事件的方法。

3. 创建并初始化事件处理器,将其作为参数传递给事件源对象。

4. 处理事件的方法中,根据事件类型进行相应的处理逻辑。

需要注意的是,AWT事件处理机制是单线程的,所有的事件处理都是在主线程中进行的。

这意味着如果某个事件处理方法耗时较长或产生阻塞,会导致整个界面的响应变慢或失去响应。

为了避免这种情况,建议将复杂的处理逻辑放在新的线程中执行,然后通过事件分发线程(Event Dispatch Thread)更新界面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
9.4 鼠标事件
MouseAdapter类和MouseMotionAdapter类
public class MouseAdapter implements MouseListener { public void mouseClicked(MouseEvent e){ } public void mousePressed(MouseEvetn e){ } public void mouseReleased(MouseEvetn e){ } public void mouseEntered(MouseEvetn e){ } public void mouseExited(MouseEvetn e){ } }
JAVA程序设计
1
第九章
处理AWT事件
2
本章重点
事件处理机制 按钮事件 选项事件 鼠标事件 键盘事件
3
9.1 事件简介
事件: 事件:用户对程序的某一种功能性操作. Java中的事件分类: Java中的事件分类: 组件类事件( 组件类事件(它们均是当组件的状态发 生变化时产生) 生变化时产生) 动作类事件( 动作类事件(它们均对应用户的某一种 功能性操作动作) 功能性操作动作) 事件类所在的包:java.awt.event包,它 事件类所在的包:java.awt.event包,它 提供AWT事件所需的类和接口 提供AWT事件所需的类和接口 .
12
9.5 键盘事件
键盘事件 按下,释放,敲击 KeyEvent KeyListener addKeyListener(KeyListener listener)
13
9.5 键盘事件
KeyListener中的方法 public void keyPressed(KeyEvent e) public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e)
9
9.4 鼠标事件
MouseMotionListener public void mouseDragged(MouseEvent e) public void mouseMoved(MouseEvent e)
10
9.4 鼠标事件
MouseEvent类的方法 getX():返回鼠标事件发生时坐标点的X值 getY():返回鼠标事件发生时坐标点的Y值 getPoint():返回Point对象 getClickCount():得到鼠标点击的次数 getClickCount(): translatePoint():将鼠标事件发生点的坐标平移 setCursor():设置鼠标指针的形状
15
9.6 窗口事件
窗口的事件监听接口:WindowListener,其抽象方 窗口的事件监听接口:WindowListener,其抽象方 法为: 法为:
windowActivated(WindowEvent) //当窗口被激活时 //当窗口被激活时 windowClosed(WindowEvent)//当窗口被关闭时 windowClosed(WindowEvent)//当窗口被关闭时 windowClosing(WindowEvent)//当窗口正在关闭时 windowClosing(WindowEvent)//当窗口正在关闭时 windowDeactivated(WindowEvent)//当窗口被释放时 windowDeactivated(WindowEvent)//当窗口被释放时 windowDeiconified(WindowEvent)//窗口非图标化时 windowDeiconified(WindowEvent)//窗口非图标化时 windowIconified(WindowEvent)//当窗口图标化时 windowIconified(WindowEvent)//当窗口图标化时 windowOpened(WindowEvent)//当窗口被打开时 windowOpened(WindowEvent)//当窗口被打开时
17
9.7 Adapter类
18
小结
事件处本章复习题
20

8
9.4 鼠标事件
MouseListener中的5个方法 public void mousePressed(MouseEvent e) public void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e)
16
9.7 Adapter类
由于实现接口要求必须重写所有抽象方法,而往 往我们并不是所有的方法都需要,如上面的例 子,我们只用了7个方法中的一个,但其它6 子,我们只用了7个方法中的一个,但其它6个方 法还必须都写到程序中,显得非常麻烦.Java为 法还必须都写到程序中,显得非常麻烦.Java为 我们提供了一个非常好的方法来解决这个问题, 就是使用事件适配器.
4
9.1 事件简介
5
9.2 事件处理步骤
实现某一事件的监听器接口(定义事件处理的类 并实现事件的监听器接口)
public class MyApplet extends Applet implements ActionListener { public void actionPerFormed(ActionEvent e) { … } }
14
9.5 键盘事件
KeyEvent中的方法 getKeyCode():获得所按键的编码 getKeyChar():获得所按键的字符 getKeyText():获得keyCode所对应的键 的名称字符串 通过requestFocus()获得输入焦点 KeyAdapter类 同MouseAdapter类
在事件处理类中重写(实现)其事件处理的函数体 在创建AWT组件时注册事件处理代码以指定该 事件的监听器(响应者)是谁
6
9.3 事件分类
7
9.4 鼠标事件
鼠标事件 按下,释放,单击,移动,拖动 MouseEvent MouseListener MouseMotionListener addMouseListener addMouseMotionListener
相关文档
最新文档