Java提供了一個很好的自動化測試類供我們去模擬鼠標鍵盤消息。以下是Robot的主要方法
Robot類的主要方法詳細信息
1、mouseMove(int x,int y)將鼠標指針移動到給定屏幕座標;
2、mousePress(int buttons)按下一個或多個鼠標按鈕。使用mouseRelease(int buttons)方法釋放鼠標按鈕;
3、mouseWheel(int wheelAmt)在配有滾輪的鼠標上旋轉滾輪。參數wheelAmt是移動鼠標滾輪的”刻痕“數,負值表示向上/遠離用戶的運動,正值表示向下/接近用戶的運動。
4、keyPress(int keycode)按下給定的鍵。應該使用 keyRelease 方法釋放該鍵。 擁有一個以上與之相關的物理鍵(例如,KeyEvent.VK_SHIFT 可能指左 shift 鍵或右 shift 鍵)的鍵代碼可能映射到左鍵。
5、keyRelease(int keycode)釋放給定的鍵。擁有一個以上與之相關的物理鍵(例如,KeyEvent.VK_SHIFT 可能指左 shift 鍵或右 shift 鍵)的鍵代碼可能映射到左鍵。
6、delay(int ms)睡眠指定的時間。爲了捕獲發生的所有 InterruptedException,可以使用 Thread.sleep() 替代。
7、createScreenCapture(Rectangle screenRect)創建包含從屏幕中讀取的像素的圖像。該圖像不包括鼠標光標。
例子:是產生兩個按鈕,模擬在按鈕上按下左鍵或者右鍵
import java.awt.AWTException; import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.MouseInfo; import java.awt.Point; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import org.omg.CORBA.PUBLIC_MEMBER; public class Test extends JFrame { private JButton btn1 = new JButton("按鈕_1"); private JButton btn2 = new JButton("按鈕_2"); private Robot robot; public Test(){ this.setLayout(new GridLayout(0,1)); this.add(btn1); this.add(btn2); btn1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e){ if(e.getButton() == MouseEvent.BUTTON1) System.out.println("按鈕1鼠標左鍵被按下!"); if(e.getButton() == MouseEvent.BUTTON3) System.out.println("按鈕1鼠標右鍵被按下!"); } }); btn2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e){ if(e.getButton() == MouseEvent.BUTTON1) System.out.println("按鈕2鼠標左鍵被按下!"); if(e.getButton() == MouseEvent.BUTTON3) System.out.println("按鈕2鼠標右鍵被按下!"); } }); } public void testMoni(){ try { robot = new Robot(); robot.delay(1000);//延遲一秒 robot.mouseMove(100, 50);//移動到按鈕的所在位置 robot.mousePress(InputEvent.BUTTON1_MASK);//按下左鍵 robot.mouseRelease(InputEvent.BUTTON1_MASK);//鬆開左鍵 /** * robot.mouseMove(100, 50);//移動到按鈕的所在位置 robot.mousePress(InputEvent.BUTTON1_MASK);//按下右鍵 robot.mouseRelease(InputEvent.BUTTON1_MASK);//鬆開右鍵 */ } catch (AWTException e) { e.printStackTrace(); } } public static void main(String args[]){ EventQueue.invokeLater(new Runnable(){ @Override public void run() { Test frame = new Test(); frame.setSize(400, 400); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.testMoni(); } }); } }
運行結果: