二、使用SWT中的鼠标键盘事件

在SWT的snippets中有两个例子用来介绍这两个方法的使用,如下:

(1)、模拟鼠标事件

* UI Automation (for testing tools) snippet: post mouse events

import org.eclipse.swt.*;

public class Snippet142 {

public static void main(String[] args) {

final Display display = new Display();

final Shell shell = new Shell(display);

final Button button = new Button(shell,SWT.NONE);

button.setSize(100,100);

button.setText("Click");

shell.pack();

shell.open();

button.addListener(SWT.MouseDown, new Listener() {

public void handleEvent(Event e){

System.out.println("Mouse Down (button: " + e.button + " x: " + e.x + " y: " + e.y + ")");

}

});

final Point pt = display.map(shell, null, 50, 50);

new Thread(){

Event event;

public void run(){

try {

Thread.sleep(300);

} catch (InterruptedException e) {}

event = new Event();

event.type = SWT.MouseMove;

event.x = pt.x;

event.y = pt.y;

display.post(event);

try {

Thread.sleep(300);

} catch (InterruptedException e) {}

event.type = SWT.MouseDown;

event.button = 1;

display.post(event);

try {

Thread.sleep(300);

} catch (InterruptedException e) {}

event.type = SWT.MouseUp;

display.post(event);

}

}.start();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) display.sleep();

}

display.dispose();

}

}

(2)、模拟键盘事件

* UI Automation (for testing tools) snippet: post key events

import org.eclipse.swt.*;

public class Snippet146 {

public static void main(String[] args) {

final Display display = new Display();

final Shell shell = new Shell(display);

final Text text = new Text(shell, SWT.BORDER);

text.setSize(text.computeSize(150, SWT.DEFAULT));

shell.pack();

shell.open();

new Thread(){

public void run(){

String string = "Love the method.";

for (int i = 0; i < string.length(); i++) {

char ch = string.charAt(i);

boolean shift = Character.isUpperCase(ch);

ch = Character.toLowerCase(ch);

if (shift) {

Event event = new Event();

event.type = SWT.KeyDown;

event.keyCode = SWT.SHIFT;

display.post(event);

}

Event event = new Event();

event.type = SWT.KeyDown;

event.character = ch;

display.post(event);

try {

Thread.sleep(10);

} catch (InterruptedException e) {}

event.type = SWT.KeyUp;

display.post(event);

try {

Thread.sleep(100);

} catch (InterruptedException e) {}

if (shift) {

event = new Event();

event.type = SWT.KeyUp;

event.keyCode = SWT.SHIFT;

display.post(event);

}

}

}

}.start();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) display.sleep();

}

display.dispose();

}

}

两种方法中都是先声明一个Event,然后将该Event的type类型设置为对应的

SWT.KeyUp/KeyDown/MouseUp/MouseDown,最后通过Display类的post(Event)方法来模拟对应的事件。注

意:如果有多个控件,需要得到对应控件的display属性,然后post该事件。例如,在一个窗口中有一个Browser,则需要使用

thisClass.browser.getDisplay().post(event)。

java 模拟鼠标键盘_使用SWT模拟鼠标键盘事件相关推荐

  1. java银行排队系统_用GUI模拟银行排队系统

    要求: 和实际情况相似,您到银行办理业务,到了银行大厅首先是在电脑上刷卡(有的可能不用刷卡)取出一个纸条,上面有你的位置号还有你前面有多少人,在工作人员那里会有一个按钮,点击一下就会叫一个人到他那里办 ...

  2. 程序员非机械键盘_最好的非机械键盘

    程序员非机械键盘 If you're at all interested in computer accessories, you've no doubt noticed the trend towa ...

  3. 隐藏键盘_吊打苹果官方键盘?ipad第三方磁吸可拆卸键盘评测

    现在随着ios的完善,ipad的生产力也越来越多的被提及,那么一把键盘就是让ipad具有生产力的必备之物了.我的ipad是2019款的,一直没配键盘,最近也想买个键盘让它来点生产力,毕竟再让它爱奇艺下 ...

  4. 蒙特卡洛模拟预测股票_使用蒙特卡洛模拟来预测极端天气事件

    蒙特卡洛模拟预测股票 In a previous article, I outlined the limitations of conventional time series models such ...

  5. cesium鼠标控制键盘_用 Python 控制 鼠标和键盘,花式操作

    可能有时候你需要在电脑做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己爱干嘛干嘛去,有点 "按键精灵" 的意思,是不是 ...

  6. 4到20ma模拟量转换公式_西门子 S7-1200 模拟量转换

    西门子 S7-1200 模拟量转换 在PLC 编程中,遇到最多的就是将现场的模拟量信号转化为实际的工程值,如将0~20mA / 4~20mA / 0~10V等现场变送器的电流或者电压信号转化为 0~1 ...

  7. mockito模拟依赖注入_使用Mockito模拟自动装配的字段

    mockito模拟依赖注入 依赖注入是诸如Spring和EJB之类的Control容器反转的非常强大的功能. 将注入的值封装到私有字段中总是一个好主意. 但是,自动连线字段的封装会降低可测试性. 我喜 ...

  8. python模拟足球射门_用Python模拟2018世界杯夺冠之路

    2018俄罗斯世界杯小组抽签出炉,几家欢喜几家愁.世界杯从来就不乏看点,东道主俄罗斯能走多远.德国能否卫冕.西班牙是否有望东山再起.两位球王谁更接近大力神杯...距世界杯开幕还有半年时间,一切都是未知 ...

  9. python网球比赛模拟主持稿_主持人大赛模拟主持稿

    主持人大赛模拟主持稿 篇一: 尊敬的评委在座的同学们,大家晚上好(鞠躬) 非常荣幸能站在这里,我是来自 ********* ,向大家问 好(鞠躬) 第二环节模拟主持我抽到的是体育类, 所以我将以 20 ...

最新文章

  1. Django学习笔记之Django ORM Aggregation聚合详解
  2. java 待在原页面 代码_现在java后台,只要修改一点点代码,前段页面就报500,必须重新登录才行?...
  3. android+tv+无线键盘,手机键盘有那些 5款适合手机使用的无线键盘推荐
  4. XCTF-高手进阶区:NewsCenter
  5. 周三直播丨Oracle 12cR2 ADG LGWR Library Cache案例分享
  6. php转换编码去掉bom,UTF-8编码怎么去掉BOM头?
  7. php rsa加密demo,php实现RSA加密类实例_PHP
  8. Skype的故事:几乎所有风投都想投 犯罪分子洗钱必备
  9. WPS插入页码,自动生成目录
  10. Python包pretty_errors
  11. UAT 深入指南(用户验收测试)
  12. 【转载】Kano模型在用户调研中的应用:客户关系管理工具调研实例
  13. 非常喜欢微信公众号最近的几个新能力
  14. window系统区别
  15. matlab共阳极二极管,三引脚SOT-323封装的共阳极稳压二极管详情
  16. 第十八篇:融汇贯通--谈USB Video Class驱动
  17. C#中绘制三维模型的方法——面面拉伸
  18. 潘超和你聊 DeFi
  19. 动物需要更多的自由,而不是更大的笼子
  20. 网络安全季度总结:盘点2021年第一季度国内网络安全大事件

热门文章

  1. html 文字倒映效果,HTML图片CSS滤镜—倒影效果
  2. chosen ajax获取数据,Jquery Chosen插件 - 由Ajax动态填充列表
  3. oracle 数据不可恢复,Oracle数据恢复:错误叠加导致灾难不可恢复解决办法
  4. IDEA 2022.2.1 Beta 2发布:新增支持Java 18、增强JUnit 5的支持
  5. 如何快速搭建一个简约美观的在线互动教室?
  6. 皮一皮:误删了一段代码后系统还能跑起来!
  7. 手握2.2亿美元,但想不起密码,还有两次机会,一起支支招啊!
  8. 面试:说说你对 Java 中 final 的理解?
  9. 轻量级网络主干综述 20种
  10. rpm version `XZ_5.1.2alpha‘ not found