java pc的录制与回放,用Java事件处理机制实现录制回放功能
下載本文示例代碼
目前在一些java應用程序的GUI測試工具,可以提供捕獲用戶操作的能力并在代碼被修改之后能夠自動回放用戶的操作。文章將分析Java的事件處理模型及其原理,介紹了基于事件源識別的捕獲/回放所需要了解的關鍵技術并給出了兩種實現方式。
1、 Java事件介紹
1.1什么是事件 首先我們來回答"什么是事件"這一基本問題。其實事件本身就是一個抽象的概念,他是表現另一對象狀態變化的對象。在面向對象的程序設計中,事件消息是對象間通信的基本方式。在圖形用戶界面程序中,GUI組件對象根據用戶的交互產生各種類型的事件消息,這些事件消息由應用程序的事件處理代碼捕獲,在進行相應的處理后驅動消息響應對象做出反應。我們在GUI上進行叫化操作的時候,在點擊某個可響應的對象時如,按鈕,菜單,我們都會期待某個事件的發生。其實圍繞GUI的所有活動都會發生事件,但Java事件處理機制卻可以讓您挑選出您需要處理的事件。事件在Java中和其他對象基本是一樣的,但有一點不同的是,事件是由系統自動生成自動傳遞到適當的事件處理程序。
1.2Java事件處理的演變 當java的開發者開始解決用java創建應用程序這一問題時,他們就認識到java事件模型的必要性。下面對java事件處理的發展做簡要的概括。
在JDK1.0的版本采用用的事件模型,提供了基本的事件處理功能。這是一種包容模型,所有事件都封裝在單一的類Event中,所有事件對象都由單一的方法handleEvent來處理,這些定義都在Component類中。為此,只有Component類的子類才能充當事件處理程序,事件處理傳遞到組件層次結構,如果目標組件不能完全處理事件,事件被傳遞到目標組件的容器。
JDK1.1是編程界的一次革命,修正了前面版本的一些缺陷,同時增加了一些重要的新功能如,RMI、JNI、JDBC、JavaBean。在事件模型上基本框架完全重寫,并從Java1.0模型遷移到委托事件模型,在委托模型中事件源生成事件,然后事件處理委托給另一段代碼。
從JDK1.2開始,引入了Swing包事件處理模型功能更強大,更加可定制GUI組件與他們相關聯的支持類。在后面的版本基本保持了整個事件模型,但加入了一些附加事件類和接口。在1.3版本開始引入Rebot類,它能模擬鼠標和鍵盤事件,并用于自動化測試、自動運行演示、以及其他要求鼠標和鍵盤控制的應用程序。
我們把JDK1.0事件處理模型成為java 1.0事件模型,而從jdk1.1后的版本事件處理模型稱為Java 2事件處理模型。
2、 Java 2事件處理模型 在Java1.0事件處理模型中事件處理是以如下方法執行的。deliverEvent()用于決定事件的目標,目標是處理事件的組件或容器,此過程開始于GUI層的最外部而向內運作。當按一個button時,如果檢測到是該按鈕激發的事件,該按鈕會訪問它的deliverEvent()方法,這一操作由系統完成。一旦識別目標組件,正確事件類型發往組件的postEvent()方法,該方法依次把事件送到handleEvent()方法并且等待方法的返回值。"true"表明事件完全處理,"false"將使postEvent()方法聯系目標容器,希望完成事件處理。
下面給一個實例:
import java.applet.*;
import java.awt.*;
public class Button1Applet extends Applet{
public void init(){
add(new Button("Red"));
add(new Button("Blue"));
}
public boolean action(Enent evt,Object whatAction){
if( !( evt.target instanceof Button))return false;
String buttonlabel=(String)whatAction;
if(buttonlabel=="Red")setBackground(Color.red);
if(buttonlabel==" Blue")setBackground(Color.blue);
repaint();
return true;
}
}
在Java2處理事件時,沒有采用dispatchEvent()-postEvent()-handleEvent()方式,采用了監聽器類,每個事件類都有相關聯的監聽器接口。事件從事件源到監聽者的傳遞是通過對目標監聽者對象的Java方法調用進行的。
對每個明確的事件的發生,都相應地定義一個明確的Java方法。這些方法都集中定義在事件監聽者(EventListener)接口中,這個接口要繼承java.util.EventListener。 實現了事件監聽者接口中一些或全部方法的類就是事件監聽者。 伴隨著事件的發生,相應的狀態通常都封裝在事件狀態對象中,該對象必須繼承自java.util.EventObject。事件狀態對象作為單參傳遞給應響應該事件的監聽者方法中。 發出某種特定事件的事件源的標識是:遵從規定的設計格式為事件監聽者定義注冊方法,并接受對指定事件監聽者接口實例的引用。 有時,事件監聽者不能直接實現事件監聽者接口,或者還有其它的額外動作時,就要在一個源與其它一個或多個監聽者之間插入一個事件適配器類的實例,來建立它們之間的聯系。
我們來看下面一個簡單的實例:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleExample extends JFrame {
JButton jButton1 = new JButton();
public SimpleExample() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SimpleExample simpleExample = new SimpleExample();
}
private void jbInit() throws Exception {
jButton1.setText("jButton1");
jButton1.addActionListener(new SimpleExample_jButton1_actionAdapter(this));
jButton1.addActionListener(new SimpleExample_jButton1_actionAdapter(this));
this.getContentPane().add(jButton1, BorderLayout.CENTER);
this.setVisible(true);
}
void jButton1_actionPerformed(ActionEvent e) {
System.exit(0);
}
}
class SimpleExample_jButton1_actionAdapter implements java.awt.event.ActionListener {
SimpleExample adaptee;
SimpleExample_jButton1_actionAdapter(SimpleExample adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
共3頁。 1 2 3 :
目前在一些java應用程序的GUI測試工具,可以提供捕獲用戶操作的能力并在代碼被修改之后能夠自動回放用戶的操作。文章將分析Java的事件處理模型及其原理,介紹了基于事件源識別的捕獲/回放所需要了解的關鍵技術并給出了兩種實現方式。
1、 Java事件介紹
1.1什么是事件 首先我們來回答"什么是事件"這一基本問題。其實事件本身就是一個抽象的概念,他是表現另一對象狀態變化的對象。在面向對象的程序設計中,事件消息是對象間通信的基本方式。在圖形用戶界面程序中,GUI組件對象根據用戶的交互產生各種類型的事件消息,這些事件消息由應用程序的事件處理代碼捕獲,在進行相應的處理后驅動消息響應對象做出反應。我們在GUI上進行叫化操作的時候,在點擊某個可響應的對象時如,按鈕,菜單,我們都會期待某個事件的發生。其實圍繞GUI的所有活動都會發生事件,但Java事件處理機制卻可以讓您挑選出您需要處理的事件。事件在Java中和其他對象基本是一樣的,但有一點不同的是,事件是由系統自動生成自動傳遞到適當的事件處理程序。
1.2Java事件處理的演變 當java的開發者開始解決用java創建應用程序這一問題時,他們就認識到java事件模型的必要性。下面對java事件處理的發展做簡要的概括。
在JDK1.0的版本采用用的事件模型,提供了基本的事件處理功能。這是一種包容模型,所有事件都封裝在單一的類Event中,所有事件對象都由單一的方法handleEvent來處理,這些定義都在Component類中。為此,只有Component類的子類才能充當事件處理程序,事件處理傳遞到組件層次結構,如果目標組件不能完全處理事件,事件被傳遞到目標組件的容器。
JDK1.1是編程界的一次革命,修正了前面版本的一些缺陷,同時增加了一些重要的新功能如,RMI、JNI、JDBC、JavaBean。在事件模型上基本框架完全重寫,并從Java1.0模型遷移到委托事件模型,在委托模型中事件源生成事件,然后事件處理委托給另一段代碼。
從JDK1.2開始,引入了Swing包事件處理模型功能更強大,更加可定制GUI組件與他們相關聯的支持類。在后面的版本基本保持了整個事件模型,但加入了一些附加事件類和接口。在1.3版本開始引入Rebot類,它能模擬鼠標和鍵盤事件,并用于自動化測試、自動運行演示、以及其他要求鼠標和鍵盤控制的應用程序。
我們把JDK1.0事件處理模型成為java 1.0事件模型,而從jdk1.1后的版本事件處理模型稱為Java 2事件處理模型。
2、 Java 2事件處理模型 在Java1.0事件處理模型中事件處理是以如下方法執行的。deliverEvent()用于決定事件的目標,目標是處理事件的組件或容器,此過程開始于GUI層的最外部而向內運作。當按一個button時,如果檢測到是該按鈕激發的事件,該按鈕會訪問它的deliverEvent()方法,這一操作由系統完成。一旦識別目標組件,正確事件類型發往組件的postEvent()方法,該方法依次把事件送到handleEvent()方法并且等待方法的返回值。"true"表明事件完全處理,"false"將使postEvent()方法聯系目標容器,希望完成事件處理。
下面給一個實例:
import java.applet.*;
import java.awt.*;
public class Button1Applet extends Applet{
public void init(){
add(new Button("Red"));
add(new Button("Blue"));
}
public boolean action(Enent evt,Object whatAction){
if( !( evt.target instanceof Button))return false;
String buttonlabel=(String)whatAction;
if(buttonlabel=="Red")setBackground(Color.red);
if(buttonlabel==" Blue")setBackground(Color.blue);
repaint();
return true;
}
}
在Java2處理事件時,沒有采用dispatchEvent()-postEvent()-handleEvent()方式,采用了監聽器類,每個事件類都有相關聯的監聽器接口。事件從事件源到監聽者的傳遞是通過對目標監聽者對象的Java方法調用進行的。
對每個明確的事件的發生,都相應地定義一個明確的Java方法。這些方法都集中定義在事件監聽者(EventListener)接口中,這個接口要繼承java.util.EventListener。 實現了事件監聽者接口中一些或全部方法的類就是事件監聽者。 伴隨著事件的發生,相應的狀態通常都封裝在事件狀態對象中,該對象必須繼承自java.util.EventObject。事件狀態對象作為單參傳遞給應響應該事件的監聽者方法中。 發出某種特定事件的事件源的標識是:遵從規定的設計格式為事件監聽者定義注冊方法,并接受對指定事件監聽者接口實例的引用。 有時,事件監聽者不能直接實現事件監聽者接口,或者還有其它的額外動作時,就要在一個源與其它一個或多個監聽者之間插入一個事件適配器類的實例,來建立它們之間的聯系。
我們來看下面一個簡單的實例:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleExample extends JFrame {
JButton jButton1 = new JButton();
public SimpleExample() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SimpleExample simpleExample = new SimpleExample();
}
private void jbInit() throws Exception {
jButton1.setText("jButton1");
jButton1.addActionListener(new SimpleExample_jButton1_actionAdapter(this));
jButton1.addActionListener(new SimpleExample_jButton1_actionAdapter(this));
this.getContentPane().add(jButton1, BorderLayout.CENTER);
this.setVisible(true);
}
void jButton1_actionPerformed(ActionEvent e) {
System.exit(0);
}
}
class SimpleExample_jButton1_actionAdapter implements java.awt.event.ActionListener {
SimpleExample adaptee;
SimpleExample_jButton1_actionAdapter(SimpleExample adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
共3頁。 1 2 3 :
下載本文示例代碼
用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能用Java事件處理機制實現錄制回放功能
閱讀(85) | 評論(0) | 轉發(0) |
總結
以上是生活随笔為你收集整理的java pc的录制与回放,用Java事件处理机制实现录制回放功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015 最新版app审核标准
- 下一篇: Java基础——字符串替换