最近在学习SWT/JFace,在做一个小东西的时候需要模拟鼠标键盘事件,在网上搜了一下,在java中模拟这些事件,主要有两种方法:
一、使用AWT中的Robot类
Robot
java.lang.Object
java.awt.Robot
--------------------------------------------------------------------------------
public class Robotextends Object 此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。类中几个主要的模拟函数如下:
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)
在配有滚轮的鼠标上旋转滚轮。
二、使用SWT中的鼠标键盘事件
在SWT的snippets中有两个例子用来介绍这两个方法的使用,如下:
(1)、模拟鼠标事件
(2)、模拟键盘事件
两种方法中都是先声明一个Event,然后将该Event的type类型设置为对应的SWT.KeyUp/KeyDown/MouseUp/MouseDown,最后通过Display类的post(Event)方法来模拟对应的事件。注意:如果有多个控件,需要得到对应控件的display属性,然后post该事件。例如,在一个窗口中有一个Browser,则需要使用thisClass.browser.getDisplay().post(event)。