要能够让图形界面接收用户的操作,就必须给各个组件加上事件处理机制。在事件处理的过程中,主要涉及三类对象: ◇ Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 ◇ Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 ◇ Event handler-事件处理者,接收事件对象并对其进行处理的对象。 事件及处理机制 组件(事件发生者)触发一个相应类型的事 件 此事件由相应类型的Listener(事件监听者) 接收并处理 ///java事件类 与AWT有关的所有事件类都由java.awt.AWTEvent类派生,它也是EventObject类的子类。AWT事件共有10类,可以归为两大类:低级事件和高级事件。 java.util.EventObject类是所有事件对象的基础父类,所有事件都是由它派生出来的。AWT的相关事件继承于java.awt.AWTEvent类,这些AWT事件分为两大类:低级事件和高级事件,低级事件是指基于组件和容器的事件,当一个组件上发生事件,如:鼠标的进入,点击,拖放等,或组件的窗口开关等,触发了组件事件。高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发此事件的类,如在TextField中按Enter键会触发ActionEvent事件,滑动滚动条会触发AdjustmentEvent事件,或是选中项目列表的某一条就会触发ItemEvent事件。 低级事件{ComponentEvent( 组件事件:组件尺寸的变化,移动) {ContainerEvent( 容器事件:组件增加,移动) {WindowEvent( 窗口事件:关闭窗口,窗口闭合,图标化) {FocusEvent( 焦点事件:焦点的获得和丢失) {KeyEvent( 键盘事件:键按下、释放) {MouseEvent( 鼠标事件:鼠标单击,移动) ◇ 高级事件(语义事件){ActionEvent(动作事件:按钮按下,TextField中按Enter键){AdjustmentEvent(调节事件:在滚动条上移动滑块以调节数值){ItemEvent(项目事件:选择项目,不选择"项目改变"){TextEvent(文本事件,文本对象改变) 引入事件处理机制后的编程基本方法如下: ① 对java.awt中组件实现事件处理必须使用java.awt.event包,所以在程序开始应加入import java.awt.event.*语句. ② 用如下语句设置事件监听者: 事件源.addXXListener(XXListener代表某种事件监听者). ③ 事件监听者所对应的类实现事件所对应的接口XXListener,并重写接口中的全部方法. 这样就可以处理图形用户界面中的对应事件了.要删除事件监听者可以使用语句: 事件源.removeXXListener; 例1 按钮单击事件的处理方法. import java.awt.*; import java.applet.*; import java.awt.event.*; public class ActionListenerDemo extends Applet implements ActionListener{ Button b=new Button("Press Me"); public void init(){ add(b); //设置按钮b的监听者 b.addActionListener(this); } //实现ActionListener接口所定义的方法actionPerformed public void actionPerformed(ActionEvent e){ showStatus("Button Clicked"); } } 例2 选择事件的处理. import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class ItemListenerDemo extends Applet implements ItemListener{ TextArea ta=new TextArea(6,30); String[] city={"北京","上海","天津","济南","青岛"}; Checkbox cb[]=new Checkbox[5]; public void init(){ add(new Label("你选择的城市是: ")); add(ta); add(new Label("请选择你喜爱的城市: ")); for(int i=0;i<5;i++){ cb[i]=new Checkbox(city[i]); add(cb[i]); cb[i].addItemListener(this); }} public void itemStateChanged(ItemEvent e){ ta.append(e.getItem()+"\t");}} 例3 鼠标事件及鼠标移动事件的处理. import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class MouseEventDemo extends Applet implements MouseListener,MouseMotionListener { int x1,y1,x2,y2; public void init(){addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g){ g.drawLine(x1,y1,x2,y2); } public void mousePressed(MouseEvent e){ x1=e.getX(); y1=e.getY();} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseDragged(MouseEvent e){ x2=e.getX(); y2=e.getY(); repaint(); } public void mouseMoved(MouseEvent e){}} 事件适配器 为了方便,Java为那些声明了多个方法的Listener接口提供了一个对应的适配器(Adapter)类,在该类中实现了对应接口的所有方法,只是方法体为空. 在创建新类时,可以不实现接口,而是只继承某个适当的适配器,并且仅覆盖所关心的事件处理方法即可. 接口及对应的适配器类 如下所示: 例4 通过适配器来创建一个可关闭的窗口. import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class WindowAdapterDemo extends Frame{ public WindowAdapterDemo(){ super("可关闭的窗口"); setSize(300,200); setVisible(true); addWindowListener(new WinAdapter()); } public static void main(String[] args){ new WindowAdapterDemo(); } class WinAdapter extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0); }}} Swing组件介绍 在Java中,能够实现图形用户界面的类库两个:java.awt和javax.swing.后者是Java基础类库(JFC)的一个组成部分,提供了一套比前者功能更强,数量更多,更加美观的图形用户界面组件. Swing和AWT最大差别在于Swing组件类不带本地代码,因此不受操作系统平台的限制,具有比AWT更强的功能,比如:Swing按钮和标签类可以显示图像标题且可被制作成非矩形形状,可以为Swing组件加边框,能够自动适应操作系统外观等.
JAVA事件调用 事件 java
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
域控组织架构同步工具
域控组策略基本设置 标注: 组策略计算配置:系统需要重启才生效 &n
域控组织架构同步工具 数据库 python 用户登录 服务器