Java 在windows 下模擬鼠標鍵盤的輸入

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();
			}
		});
		
		
	}
}


運行結果:wKiom1N-u5HSEh-2AAEEmwuNFKw091.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章