您的位置:首页 > 编程语言 > Java开发

Java 在windows 下模拟鼠标键盘的输入

2014-05-23 11:04 666 查看
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();
}
});

}
}

运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: