您所在的位置: 首页>>开发>>JAVA>>

用Java事件处理机制实现录制回放功能(5)

http://developer.51cto.com  2005-09-12 16:49  宋荆汉  IBM中国  我要评论(0)
  • 摘要:目前在一些Java应用程序的GUI测试工具,可以提供捕获用户操作的能力并在代码被修改之后能够自动回放用户的操作。文章将分析Java的事件处理模型及其原理,介绍了基于事件源识别的捕获/回放所需要了解的关键技术并给出了两种实现方式。
  • 标签:Java  功能  处理机

在文本域中首先出现的是"event is:test",这是因为首先得到处理的是EventQueue对象发送到系统事件队列上的ActionEvent。
下面的代码简单说明了如何捕获事件:

import java.awt.EventQueue;
import java.awt.*;
import java.util.*;
public class MyQueueEvent extends EventQueue
{
//定义EventQueue的子类
public MyQueueEvent()
{
}
public static void main(String[] args)
{
SimpleExample.main(new String[]{null}) ;
MyQueueEvent myQueueEvent1
= new MyQueueEvent();
Toolkit.getDefaultToolkit().
getSystemEventQueue().push(myQueueEvent1) ;
}
//在这里重载事件分发的方法
public void dispatchEvent(AWTEvent ae)
{
if(ae.getSource()
instanceof javax.swing.JButton)
System.out.println
("My apture:"+((javax.swing.JButton)
ae.getSource()).getText()) ;
super.dispatchEvent(ae);
}

这个程序可以打印出当前应用的所有的事件,可以将这些事件中选出你需要的事件保存当然你还需要解析该控件的特征。在上面加黑部分的代码,打印事件源控件的名称。
除此之外,还可以通过实现java.awt.event. AWTEventListener接口实现对事件的捕获。这个侦听器接口可以接收Component or MenuComponent以及它们的派生类在整个系统范围内所分发的事件,AWTEventListeners只是被动的监控这些事件。
如果要监控系统事件,除了要实现接口,还要用Toolkit的addAWTEventListener方法注册这个侦听器。
下面我们来看一个实例:

import java.awt.AWTEvent;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.AWTEventListener;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.lang.ref.WeakReference;
public class MyAWTEventListener
implements AWTEventListener
{
private static MyAWTEventListener
s_singleton = null;
//保证该类只被初始化一次
public static
MyAWTEventListener getInstance()
{
if(s_singleton==null)
{
s_singleton=new MyAWTEventListener();
}
return s_singleton;
}
private MyAWTEventListener()
{
//注意下面这行代码,如果没有这行代码,
将无法接收到系统分发的事件
// 下面代码在注册时,
只请求了接收WINDOW_EVENT_MASK事件
//但实际上,
你可以接收其他AWTEvent中定义的事件类型
Toolkit.getDefaultToolkit().addAWTEventListener
(this,
AWTEvent.COMPONENT_EVENT_MASK
);
}
/*
这就是接口方法的实现
*/
public void eventDispatched
(final AWTEvent theEvent)
{
processEvent(theEvent);
}
private static void processEvent
(final AWTEvent theEvent)
{
System.out.println
(theEvent.getSource() ) ;
//打印事件源
switch (theEvent.getID())
{
case WindowEvent.WINDOW_OPENED:
//System.out.println
(((Frame)theEvent.getSource()).getTitle() ) ;
case WindowEvent.WINDOW_ACTIVATED:
case WindowEvent.WINDOW_DEACTIVATED:
case WindowEvent.WINDOW_CLOSING:
default: break;
}
}
}


共7页: 上一页 [1] [2] [3] [4] 5 [6] [7] 下一页
【内容导航】
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual Basic完全自学宝典

  • 作者:强锋科技,杨章伟
  • Visual Basic是用户最多的开发技术之一。本书由浅入深,循序渐进地教授读者如何使用Visual Basic开发应用系统,是Visual Basic..
Copyright©2005-2008 51CTO.COM 版权所有