自动点击触发事件(自动按下释放键盘上某个键)

Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。

使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。

我们可以利用这个类写出好多有意思的东西,下面我将详细的这个类的用法。

Robot这个类中的方法并不是很多,常用的有以下几个:

void delay (int ms)  睡眠指定的时间(类似于线程中sleep)

void keyPress(int keycode) 按下指定的键

void keyRelease(int keycode) 释放指定的键

void mouseMove(int x,int y) 将鼠标移动到给定的屏幕坐标上

void mousePress(int buttons) 按下一个或多个鼠标按键

void mouseRelease(int buttons) 释放一个活多个鼠标按键

void mouseWheel(int wheelAmt) 滚动鼠标滑轮

下面看一个自动实现HelloWorld的例子:

package autoHelloWorld;

import java.awt.Robot;
import java.awt.event.KeyEvent;

public class Main {
 private static Robot robot;

 public static void main(String[] args) {
  try {
   robot = new Robot();//创建Robot对象
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  //这里是按下和释放alt键,这个键的功能是调用菜单
  robot.keyPress(KeyEvent.VK_ALT);
  robot.keyRelease(KeyEvent.VK_ALT);
  robot.delay(500);//延迟500ms
  //这里是按下和释放回车键,用于确定是file选项
  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);
  robot.delay(500);
  //选择New
  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);
  robot.delay(500);
  //选择Java Project
  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);
  robot.delay(500);
  
  //输入字母a,即工程名
  robot.keyPress(KeyEvent.VK_A);
  robot.keyRelease(KeyEvent.VK_A);
  robot.delay(500);
  
  //回车确定创建工程
  robot.keyPress(KeyEvent.VK_ENTER);  
  robot.keyRelease(KeyEvent.VK_ENTER);  
  robot.delay(500);  
  //将鼠标抵用到刚刚建立的工程上面,这个坐标是作者在自己的电脑上实验获得的,在不同的电脑上可能不一样,可以用
  //Point point = MouseInfo.getPointerInfo().getLocation();
  //System.out.println(point);来打印当前鼠标的坐标,从而找到对的位置
  robot.mouseMove(43, 136);
  //按下和释放鼠标左键,选定工程
  robot.mousePress(KeyEvent.BUTTON1_MASK);
  robot.mouseRelease(KeyEvent.BUTTON1_MASK);

  //alt键选择菜单并调出newClass的选项
  robot.keyPress(KeyEvent.VK_ALT);
  robot.keyRelease(KeyEvent.VK_ALT);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);
  robot.delay(500);
  //下面换回小写
  //切换成大写
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_H);
  robot.keyRelease(KeyEvent.VK_H);
  robot.delay(200);
  //换回小写
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_E);
  robot.keyRelease(KeyEvent.VK_E);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_L);
  robot.keyRelease(KeyEvent.VK_L);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_L);
  robot.keyRelease(KeyEvent.VK_L);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_O);
  robot.keyRelease(KeyEvent.VK_O);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_W);
  robot.keyRelease(KeyEvent.VK_W);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_O);
  robot.keyRelease(KeyEvent.VK_O);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_R);
  robot.keyRelease(KeyEvent.VK_R);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_L);
  robot.keyRelease(KeyEvent.VK_L);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_D);
  robot.keyRelease(KeyEvent.VK_D);
  robot.delay(200);
  
  //移动鼠标选择自动穿件main函数
  robot.mouseMove(533, 448);
  robot.mousePress(KeyEvent.BUTTON1_MASK);
  robot.mouseRelease(KeyEvent.BUTTON1_MASK);
  robot.delay(500);
  //回车创建完成
  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);
  robot.delay(500);
  //移动光标到输入代码的行上
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_DOWN);
  robot.keyRelease(KeyEvent.VK_DOWN);
  robot.delay(500);

  //输入syso并用alt+/快捷键补全
  robot.keyPress(KeyEvent.VK_S);
  robot.keyRelease(KeyEvent.VK_S);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_Y);
  robot.keyRelease(KeyEvent.VK_Y);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_S);
  robot.keyRelease(KeyEvent.VK_S);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_O);
  robot.keyRelease(KeyEvent.VK_O);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_ALT);
  robot.keyPress(KeyEvent.VK_SLASH);
  robot.keyRelease(KeyEvent.VK_ALT);
  robot.keyRelease(KeyEvent.VK_SLASH);
  robot.delay(500);

  //输入双引号
  robot.keyPress(KeyEvent.VK_SHIFT);
  robot.keyPress(KeyEvent.VK_QUOTE);
  robot.keyRelease(KeyEvent.VK_SHIFT);
  robot.keyRelease(KeyEvent.VK_QUOTE);

  //输入HelloWorld
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(500);
  robot.keyPress(KeyEvent.VK_H);
  robot.keyRelease(KeyEvent.VK_H);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_E);
  robot.keyRelease(KeyEvent.VK_E);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_L);
  robot.keyRelease(KeyEvent.VK_L);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_L);
  robot.keyRelease(KeyEvent.VK_L);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_O);
  robot.keyRelease(KeyEvent.VK_O);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_W);
  robot.keyRelease(KeyEvent.VK_W);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_CAPS_LOCK);
  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_O);
  robot.keyRelease(KeyEvent.VK_O);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_R);
  robot.keyRelease(KeyEvent.VK_R);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_L);
  robot.keyRelease(KeyEvent.VK_L);
  robot.delay(200);
  robot.keyPress(KeyEvent.VK_D);
  robot.keyRelease(KeyEvent.VK_D);
  robot.delay(200);

  //ctrl+shift+F 格式化
  robot.keyPress(KeyEvent.VK_SHIFT);
  robot.keyPress(KeyEvent.VK_CONTROL);
  robot.keyPress(KeyEvent.VK_F);
  robot.keyRelease(KeyEvent.VK_SHIFT);
  robot.keyRelease(KeyEvent.VK_CONTROL);
  robot.keyRelease(KeyEvent.VK_F);
  
  //ctrl+S保存
  robot.keyPress(KeyEvent.VK_CONTROL);
  robot.keyPress(KeyEvent.VK_S);
  robot.keyRelease(KeyEvent.VK_S);
  robot.keyRelease(KeyEvent.VK_CONTROL);
  
  //F11运行
  robot.keyPress(KeyEvent.VK_F11);
  robot.keyRelease(KeyEvent.VK_F11);  
  
 } 
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java GUI 中的键盘输入事件,可以通过实现 KeyListener 接口来实现。Keylistener 接口提供了三个方法,分别是 keyPressed(KeyEvent e)、keyReleased(KeyEvent e)、keyTyped(KeyEvent e)。当用户按下释放或输入一个按键时,Java 会自动调用这些方法。 例如,当用户按下键盘上的某个时,会触发 keyPressed(KeyEvent e) 方法。在方法中,可以通过 e.getKeyCode() 方法获取用户按下的 ASCII 码,从而进行相应的处理。 下面是一个示例代码: ``` import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; public class KeyInputTest extends JFrame implements KeyListener { public KeyInputTest() { JPanel panel = new JPanel(); panel.addKeyListener(this); add(panel); setSize(200, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new KeyInputTest(); } @Override public void keyPressed(KeyEvent e) { System.out.println("Key Pressed: " + e.getKeyCode()); } @Override public void keyReleased(KeyEvent e) { System.out.println("Key Released: " + e.getKeyCode()); } @Override public void keyTyped(KeyEvent e) { System.out.println("Key Typed: " + e.getKeyChar()); } } ``` 在这个示例中,我们创建了一个 JFrame 窗口,并在其中添加了一个 JPanel。然后,我们实现了 KeyListener 接口,并重写了三个方法。在构造方法中,我们将 JPanel 的键盘事件监听器设置为自己,并将窗口设置为可见状态。当用户按下释放或输入一个时,Java 会自动调用相应的方法,在方法中我们可以根据用户的操作进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值