Java 操作键盘鼠标

来源:互联网 发布:全球网络覆盖率 编辑:程序博客网 时间:2024/04/29 17:18

Java 对于操作键盘鼠标 ,提供了一个工具类:java.awt.Robot ,这个类使用起来比较简单。

【1. 工具类:】

package org.zgf.robot.util;import java.awt.AWTException;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.image.BufferedImage;/** * @ClassName: RobotUtil * @Description: 控制键盘鼠标工具类 * @author: zonggf * @date: 2015年11月30日 下午1:53:45 */public class RobotUtil {private static Robot robot;static {if (null == robot) {try {robot = new Robot();// TODOrobot.delay(2000);} catch (AWTException e) {e.printStackTrace();}}}/** * @Title: setDelay * @Description: 设置延时执行时间 * @param ms *            毫秒数 * @return: void * @author: zonggf * @time: 2015年12月1日 上午11:41:29 */public void setDelay(int ms) {robot.setAutoDelay(ms);}/** * @Title: pressKey * @Description: 按下键盘按键 * @param robot * @param keyvalue * @return: void * @author: zonggf * @time: 2015年11月30日 下午1:54:20 */public static void keyPress(int keyValue) {robot.keyPress(keyValue); // 按下键}/** * @Title: pressKey * @Description: 释放键盘按键 * @param robot * @param keyvalue * @return: void * @author: zonggf * @time: 2015年11月30日 下午1:54:20 */public static void keyRelease(int keyValue) {robot.keyRelease(keyValue); // 松开按键}/** * @Title: pressKey * @Description: 点击键盘按键 * @param robot * @param keyvalue * @return: void * @author: zonggf * @time: 2015年11月30日 下午1:54:20 */public static void keyClick(int keyValue) {robot.keyPress(keyValue); // 按下键robot.keyRelease(keyValue); // 松开按键}/** * @Title: pressKeyWithShift * @Description: 模拟按键 + Shfit * @param robot * @param keyvalue * @return: void * @author: zonggf * @time: 2015年11月30日 下午1:54:38 */public static void clicksKeyWithShift(int keyValue) {robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(keyValue);robot.keyRelease(keyValue);robot.keyRelease(KeyEvent.VK_SHIFT);}/** * @Title: mousePress * @Description: 点击鼠标按键 InputEvent.BUTTON1_MASK: 鼠标左键 *               InputEvent.BUTTON2_MASK: 鼠标中间 InputEvent.BUTTON3_MASK: 鼠标右键 * @param buttons * @return: void * @author: zonggf * @time: 2015年11月30日 下午2:32:21 */public static void mouseClick(int buttons) {if(10000 == buttons){//判断是否是鼠标双击robot.mousePress(InputEvent.BUTTON1_MASK);robot.mouseRelease(InputEvent.BUTTON1_MASK);robot.mousePress(InputEvent.BUTTON1_MASK);robot.mouseRelease(InputEvent.BUTTON1_MASK);}else{robot.mousePress(buttons);robot.mouseRelease(buttons);}}/** * @Title: mousePress * @Description: 按下鼠标按键 InputEvent.BUTTON1_MASK: 鼠标左键 *               InputEvent.BUTTON2_MASK: 鼠标中间 InputEvent.BUTTON3_MASK: 鼠标右键 * @param buttons * @return: void * @author: zonggf * @time: 2015年11月30日 下午2:32:21 */public static void mousePress(int buttons) {robot.mousePress(buttons);}/** * @Title: mousePress * @Description: 释放鼠标按键 InputEvent.BUTTON1_MASK: 鼠标左键 *               InputEvent.BUTTON2_MASK: 鼠标中间 InputEvent.BUTTON3_MASK: 鼠标右键 * @param buttons * @return: void * @author: zonggf * @time: 2015年11月30日 下午2:32:21 */public static void mouseRelease(int buttons) {robot.mouseRelease(buttons);}/** * @Title: mouseMove * @Description: 鼠标移动到指定位置 * @param x * @param y * @return: void * @author: zonggf * @time: 2015年12月1日 上午11:33:08 */public static void mouseMove(int x, int y) {robot.mouseMove(x, y);}/** * @Title: mouseWheel * @Description: 鼠标移动 * @param wheelAmt *            鼠标移动的格数,1代表1格 * @return: void * @author: zonggf * @time: 2015年12月1日 上午11:37:37 */public static void mouseWheel(int wheelAmt) {robot.mouseWheel(wheelAmt);}/** * @Title: screenShotFull * @Description: 截取全屏 * @return * @return: BufferedImage * @author: zonggf * @time: 2015年12月1日 上午11:04:55 */public static BufferedImage screenShotFull() {Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();return robot.createScreenCapture(new Rectangle(0, 0, screenSize.width,screenSize.height));}/** * @Title: screenShotRect * @Description: 截取指定大小的矩形 * @param x *            坐标x * @param y *            坐标y * @param width *            宽度 * @param height *            高度 * @return * @return: BufferedImage * @author: zonggf * @time: 2015年12月1日 上午11:06:31 */public static BufferedImage screenShotRect(int x, int y, int width,int height) {return robot.createScreenCapture(new Rectangle(x, y, width, height));}}


【2. 1常量类 KeyConstant: 封装了普通笔记本电脑上的所有按键】

package org.zgf.robot.constant;import java.awt.event.KeyEvent;/** * @ClassName: KeyConstant * @Description: 键名称常量 * @author: zonggf * @date: 2015年12月1日 上午9:08:36 */public class KeyConstant {// 缓存F键/** 功能键:F1 */public static final int VK_F1 = KeyEvent.VK_F1;/** 功能键:F2 */public static final int VK_F2 = KeyEvent.VK_F2;/** 功能键:F3 */public static final int VK_F3 = KeyEvent.VK_F3;/** 功能键:F4 */public static final int VK_F4 = KeyEvent.VK_F4;/** 功能键:F5 */public static final int VK_F5 = KeyEvent.VK_F5;/** 功能键:F6 */public static final int VK_F6 = KeyEvent.VK_F6;/** 功能键:F7 */public static final int VK_F7 = KeyEvent.VK_F7;/** 功能键:F8 */public static final int VK_F8 = KeyEvent.VK_F8;/** 功能键:F9 */public static final int VK_F9 = KeyEvent.VK_F9;/** 功能键:F10 */public static final int VK_F10 = KeyEvent.VK_F10;/** 功能键:F11 */public static final int VK_F11 = KeyEvent.VK_F11;/** 功能键:F12 */public static final int VK_F12 = KeyEvent.VK_F12;// 缓存数字区/** 数字键:0 */public static final int VK_0 = KeyEvent.VK_0;/** 数字键:1 */public static final int VK_1 = KeyEvent.VK_1;/** 数字键:2 */public static final int VK_2 = KeyEvent.VK_2;/** 数字键:3 */public static final int VK_3 = KeyEvent.VK_3;/** 数字键: 4 */public static final int VK_4 = KeyEvent.VK_4;/** 数字键:5 */public static final int VK_5 = KeyEvent.VK_5;/** 数字键: 6 */public static final int VK_6 = KeyEvent.VK_6;/** 数字键:7 */public static final int VK_7 = KeyEvent.VK_6;/** 数字键:8 */public static final int VK_8 = KeyEvent.VK_8;/** 数字键: 9 */public static final int VK_9 = KeyEvent.VK_9;// 缓存字母区/** 字母键: A */public static final int VK_A = KeyEvent.VK_A;/** 字母键:B */public static final int VK_B = KeyEvent.VK_B;/** 字母键:C */public static final int VK_C = KeyEvent.VK_C;/** 字母键:D */public static final int VK_D = KeyEvent.VK_D;/** 字母键:E */public static final int VK_E = KeyEvent.VK_E;/** 字母键:F */public static final int VK_F = KeyEvent.VK_F;/** 字母键:G */public static final int VK_G = KeyEvent.VK_G;/** 字母键:H */public static final int VK_H = KeyEvent.VK_H;/** 字母键:I */public static final int VK_I = KeyEvent.VK_I;/** 字母键:J */public static final int VK_J = KeyEvent.VK_J;/** 字母键:K */public static final int VK_K = KeyEvent.VK_K;/** 字母键:L */public static final int VK_L = KeyEvent.VK_L;/** 字母键:M */public static final int VK_M = KeyEvent.VK_M;/** 字母键:N */public static final int VK_N = KeyEvent.VK_N;/** 字母键:O */public static final int VK_O = KeyEvent.VK_O;/** 字母键:P */public static final int VK_P = KeyEvent.VK_P;/** 字母键:Q */public static final int VK_Q = KeyEvent.VK_Q;/** 字母键:R */public static final int VK_R = KeyEvent.VK_R;/** 字母键:S */public static final int VK_S = KeyEvent.VK_S;/** 字母键:T */public static final int VK_T = KeyEvent.VK_T;/** 字母键:U */public static final int VK_U = KeyEvent.VK_U;/** 字母键:V */public static final int VK_V = KeyEvent.VK_V;/** 字母键:W */public static final int VK_W = KeyEvent.VK_W;/** 字母键:X */public static final int VK_X = KeyEvent.VK_X;/** 字母键:Y */public static final int VK_Y = KeyEvent.VK_Y;/** 字母键:Z */public static final int VK_Z = KeyEvent.VK_Z;// 缓存左侧功能键区/** 退出键:Esc */public static final int VK_ESCAPE = KeyEvent.VK_ESCAPE;/** 制表符键:Tab */public static final int VK_TAB = KeyEvent.VK_TAB;/** 大小写转换键:CapsLock */public static final int VK_CAPS_LOCK = KeyEvent.VK_CAPS_LOCK;/** 功能键:Shift */public static final int VK_SHIFT = KeyEvent.VK_SHIFT;/** 功能键:Ctrl */public static final int VK_CONTROL = KeyEvent.VK_CONTROL;// 缓存底部功能键/** windows 键 */public static final int VK_WINDOWS = KeyEvent.VK_WINDOWS;/** 功能键:Alt */public static final int VK_ALT = KeyEvent.VK_ALT;/** 空格   */public static final int VK_SPACE = KeyEvent.VK_SPACE;// 缓存右侧功能键区/** 暂停  */public static final int VK_PAUSE = KeyEvent.VK_PAUSE;/** 插入 */public static final int VK_INSERT = KeyEvent.VK_INSERT;/** 截屏 */public static final int VK_PRINTSCREEN = KeyEvent.VK_PRINTSCREEN;/** 删除 */public static final int VK_DELETE = KeyEvent.VK_DELETE;/** 空格  */public static final int VK_BACK_SPACE = KeyEvent.VK_BACK_SPACE;/** 回车  */public static final int VK_ENTER = KeyEvent.VK_ENTER;/** 翻页:向上翻页 */public static final int VK_PAGE_UP = KeyEvent.VK_PAGE_UP;/** 翻页:向下翻页  */public static final int VK_PAGE_DOWN = KeyEvent.VK_PAGE_DOWN;/** Home */public static final int VK_HOME = KeyEvent.VK_HOME;/** End */public static final int VK_END = KeyEvent.VK_END;/** ↑ */public static final int VK_UP = KeyEvent.VK_UP;/** ↓ */public static final int VK_DOWN = KeyEvent.VK_DOWN;/** ← */public static final int VK_LEFT = KeyEvent.VK_LEFT;/** → */public static final int VK_RIGHT = KeyEvent.VK_RIGHT;// 缓存数字键区 11个/** 符号键:+ */public static final int VK_ADD = KeyEvent.VK_ADD;/** 符号键:- */public static final int VK_MINUS = KeyEvent.VK_MINUS;/** 符号键:[ */public static final int VK_OPEN_BRACKET = KeyEvent.VK_OPEN_BRACKET;/** 符号键:] */public static final int VK_CLOSE_BRACKET = KeyEvent.VK_CLOSE_BRACKET;/** 符号键:\ */public static final int VK_BACK_SLASH = KeyEvent.VK_BACK_SLASH;/** 符号键:; */public static final int VK_SEMICOLON = KeyEvent.VK_SEMICOLON;/** 符号键:, */public static final int VK_COMMA = KeyEvent.VK_COMMA;/** 符号键:. */public static final int VK_PERIOD = KeyEvent.VK_PERIOD;/** 符号键:/ */public static final int VK_SLASH = KeyEvent.VK_SLASH;/** 符号键:` */public static final int VK_BACK_QUOTE = KeyEvent.VK_BACK_QUOTE;/** 符号键:' */public static final int VK_QUOTE = KeyEvent.VK_QUOTE;}

【2.2 常量类MouseConstant:封装了普通笔记本电脑上的所有按键】

package org.zgf.robot.constant;import java.awt.event.InputEvent;/** * @ClassName: MousConstant  * @Description: 鼠标按键 * @author: zonggf * @date: 2015年12月1日 下午1:39:32 */public class MouseConstant {/** 鼠标左键   */public static int leftKey = InputEvent.BUTTON1_MASK;/** 鼠标中间  */public static int middleKey = InputEvent.BUTTON2_MASK;/** 鼠标右键 */public static int rightKey = InputEvent.BUTTON3_MASK;/** 鼠标左键双击  */public static int dbClickKey = 10000;}


【3. 测试类】

package org.zgf.robot.util;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;import org.junit.Before;import org.junit.Test;import org.zgf.robot.constant.CommandConstant;import org.zgf.robot.constant.KeyConstant;import org.zgf.robot.constant.MouseConstant;/** * @ClassName: TestRobotUtil  * @Description: TODO * @author: zonggf * @date: 2015年11月30日 下午2:08:17 */public class Test_RobotUtil {@Beforepublic void setUp(){try{ExcuteCommandUtil.excute(CommandConstant.openNotepad);}catch(Exception ex){ex.printStackTrace();}}/** 测试 键盘按键 */@Testpublic void test_key(){RobotUtil.keyClick(KeyConstant.VK_A);}/** 测试 鼠标右键   */@Testpublic void test_mouse_right(){RobotUtil.keyClick(KeyConstant.VK_A);RobotUtil.mouseClick(MouseConstant.rightKey);;}/** 测试鼠标移动  */@Testpublic void test_mouse_wheel(){RobotUtil.mouseWheel(5);}/** 测试截屏   */@Testpublic void test_screenShot() throws Exception{BufferedImage bi = RobotUtil.screenShotFull();File file = new File("D:/hello.png");ImageIO.write(bi, "png", file);}}


【4. 源代码下载】Java 操控键盘,鼠标,剪切板Demo  



0 0