提供了一個(gè)Robot類,在java.awt.*包下面。這個(gè)類在jdk中描述如下:
此類用于為測試自動(dòng)化、自運(yùn)行演示程序和其他需要控制鼠標(biāo)和鍵盤的應(yīng)用程序生成本機(jī)系統(tǒng)輸入事件。Robot 的主要目的是便于 Java 平臺(tái)實(shí)現(xiàn)自動(dòng)測試。
使用該類生成輸入事件與將事件發(fā)送到 AWT 事件隊(duì)列或 AWT 組件的區(qū)別在于:事件是在平臺(tái)的本機(jī)輸入隊(duì)列中生成的。例如,Robot.mouseMove 將實(shí)際移動(dòng)鼠標(biāo)光標(biāo),而不是只生成鼠標(biāo)移動(dòng)事件。
注意,某些平臺(tái)需要特定權(quán)限或擴(kuò)展來訪問低級輸入控件。如果當(dāng)前平臺(tái)配置不允許使用輸入控件,那么試圖構(gòu)造 Robot 對象時(shí)將拋出 AWTException。例如,如果 X 服務(wù)器不支持(或沒有啟用)XTEST 2.2 標(biāo)準(zhǔn)擴(kuò)展,則 X-Window 系統(tǒng)會(huì)拋出異常。
出于自測試之外的目的而使用 Robot 的應(yīng)用程序應(yīng)妥善處理這些錯(cuò)誤條件。
這個(gè)類除了模擬鼠標(biāo)鍵盤操作以外,還可以用來截取屏幕,只演示一下怎么模擬鼠標(biāo)鍵盤操作,具體api參考javadoc。這個(gè)演示完成了彈出QQ和移動(dòng)窗口的功能。代碼如下:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
/**
* @author bean
*
*/
public class RobotDemo {
private Robot robot = null;
public RobotDemo() {
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
/** 可以彈出QQ */
public void keyBoardDemo() {
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_Z);
robot.keyRelease(KeyEvent.VK_Z);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_ALT);
}
/** 前提是有個(gè)最大化的窗口,功能是移動(dòng)到標(biāo)題欄,然后拖拽到600,600的位置*/
public void mouseDemo(){
robot.mouseMove(80, 10);
robot.mousePress(KeyEvent.BUTTON1_MASK);
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
robot.mouseMove(600, 600);
robot.mouseRelease(KeyEvent.BUTTON1_MASK);
}
/**
* @param args
*/
public static void main(String[] args) {
RobotDemo demo=new RobotDemo();
demo.keyBoardDemo();
demo.mouseDemo();
}
}
此類用于為測試自動(dòng)化、自運(yùn)行演示程序和其他需要控制鼠標(biāo)和鍵盤的應(yīng)用程序生成本機(jī)系統(tǒng)輸入事件。Robot 的主要目的是便于 Java 平臺(tái)實(shí)現(xiàn)自動(dòng)測試。
使用該類生成輸入事件與將事件發(fā)送到 AWT 事件隊(duì)列或 AWT 組件的區(qū)別在于:事件是在平臺(tái)的本機(jī)輸入隊(duì)列中生成的。例如,Robot.mouseMove 將實(shí)際移動(dòng)鼠標(biāo)光標(biāo),而不是只生成鼠標(biāo)移動(dòng)事件。
注意,某些平臺(tái)需要特定權(quán)限或擴(kuò)展來訪問低級輸入控件。如果當(dāng)前平臺(tái)配置不允許使用輸入控件,那么試圖構(gòu)造 Robot 對象時(shí)將拋出 AWTException。例如,如果 X 服務(wù)器不支持(或沒有啟用)XTEST 2.2 標(biāo)準(zhǔn)擴(kuò)展,則 X-Window 系統(tǒng)會(huì)拋出異常。
出于自測試之外的目的而使用 Robot 的應(yīng)用程序應(yīng)妥善處理這些錯(cuò)誤條件。
這個(gè)類除了模擬鼠標(biāo)鍵盤操作以外,還可以用來截取屏幕,只演示一下怎么模擬鼠標(biāo)鍵盤操作,具體api參考javadoc。這個(gè)演示完成了彈出QQ和移動(dòng)窗口的功能。代碼如下:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
/**
* @author bean
*
*/
public class RobotDemo {
private Robot robot = null;
public RobotDemo() {
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
/** 可以彈出QQ */
public void keyBoardDemo() {
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_Z);
robot.keyRelease(KeyEvent.VK_Z);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_ALT);
}
/** 前提是有個(gè)最大化的窗口,功能是移動(dòng)到標(biāo)題欄,然后拖拽到600,600的位置*/
public void mouseDemo(){
robot.mouseMove(80, 10);
robot.mousePress(KeyEvent.BUTTON1_MASK);
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
robot.mouseMove(600, 600);
robot.mouseRelease(KeyEvent.BUTTON1_MASK);
}
/**
* @param args
*/
public static void main(String[] args) {
RobotDemo demo=new RobotDemo();
demo.keyBoardDemo();
demo.mouseDemo();
}
}
</script>