java 模拟鼠标键盘_使用SWT模拟鼠标键盘事件
二、使用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模拟鼠标键盘事件相关推荐
- java银行排队系统_用GUI模拟银行排队系统
要求: 和实际情况相似,您到银行办理业务,到了银行大厅首先是在电脑上刷卡(有的可能不用刷卡)取出一个纸条,上面有你的位置号还有你前面有多少人,在工作人员那里会有一个按钮,点击一下就会叫一个人到他那里办 ...
- 程序员非机械键盘_最好的非机械键盘
程序员非机械键盘 If you're at all interested in computer accessories, you've no doubt noticed the trend towa ...
- 隐藏键盘_吊打苹果官方键盘?ipad第三方磁吸可拆卸键盘评测
现在随着ios的完善,ipad的生产力也越来越多的被提及,那么一把键盘就是让ipad具有生产力的必备之物了.我的ipad是2019款的,一直没配键盘,最近也想买个键盘让它来点生产力,毕竟再让它爱奇艺下 ...
- 蒙特卡洛模拟预测股票_使用蒙特卡洛模拟来预测极端天气事件
蒙特卡洛模拟预测股票 In a previous article, I outlined the limitations of conventional time series models such ...
- cesium鼠标控制键盘_用 Python 控制 鼠标和键盘,花式操作
可能有时候你需要在电脑做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己爱干嘛干嘛去,有点 "按键精灵" 的意思,是不是 ...
- 4到20ma模拟量转换公式_西门子 S7-1200 模拟量转换
西门子 S7-1200 模拟量转换 在PLC 编程中,遇到最多的就是将现场的模拟量信号转化为实际的工程值,如将0~20mA / 4~20mA / 0~10V等现场变送器的电流或者电压信号转化为 0~1 ...
- mockito模拟依赖注入_使用Mockito模拟自动装配的字段
mockito模拟依赖注入 依赖注入是诸如Spring和EJB之类的Control容器反转的非常强大的功能. 将注入的值封装到私有字段中总是一个好主意. 但是,自动连线字段的封装会降低可测试性. 我喜 ...
- python模拟足球射门_用Python模拟2018世界杯夺冠之路
2018俄罗斯世界杯小组抽签出炉,几家欢喜几家愁.世界杯从来就不乏看点,东道主俄罗斯能走多远.德国能否卫冕.西班牙是否有望东山再起.两位球王谁更接近大力神杯...距世界杯开幕还有半年时间,一切都是未知 ...
- python网球比赛模拟主持稿_主持人大赛模拟主持稿
主持人大赛模拟主持稿 篇一: 尊敬的评委在座的同学们,大家晚上好(鞠躬) 非常荣幸能站在这里,我是来自 ********* ,向大家问 好(鞠躬) 第二环节模拟主持我抽到的是体育类, 所以我将以 20 ...
最新文章
- Django学习笔记之Django ORM Aggregation聚合详解
- java 待在原页面 代码_现在java后台,只要修改一点点代码,前段页面就报500,必须重新登录才行?...
- android+tv+无线键盘,手机键盘有那些 5款适合手机使用的无线键盘推荐
- XCTF-高手进阶区:NewsCenter
- 周三直播丨Oracle 12cR2 ADG LGWR Library Cache案例分享
- php转换编码去掉bom,UTF-8编码怎么去掉BOM头?
- php rsa加密demo,php实现RSA加密类实例_PHP
- Skype的故事:几乎所有风投都想投 犯罪分子洗钱必备
- WPS插入页码,自动生成目录
- Python包pretty_errors
- UAT 深入指南(用户验收测试)
- 【转载】Kano模型在用户调研中的应用:客户关系管理工具调研实例
- 非常喜欢微信公众号最近的几个新能力
- window系统区别
- matlab共阳极二极管,三引脚SOT-323封装的共阳极稳压二极管详情
- 第十八篇:融汇贯通--谈USB Video Class驱动
- C#中绘制三维模型的方法——面面拉伸
- 潘超和你聊 DeFi
- 动物需要更多的自由,而不是更大的笼子
- 网络安全季度总结:盘点2021年第一季度国内网络安全大事件
热门文章
- html 文字倒映效果,HTML图片CSS滤镜—倒影效果
- chosen ajax获取数据,Jquery Chosen插件 - 由Ajax动态填充列表
- oracle 数据不可恢复,Oracle数据恢复:错误叠加导致灾难不可恢复解决办法
- IDEA 2022.2.1 Beta 2发布:新增支持Java 18、增强JUnit 5的支持
- 如何快速搭建一个简约美观的在线互动教室?
- 皮一皮:误删了一段代码后系统还能跑起来!
- 手握2.2亿美元,但想不起密码,还有两次机会,一起支支招啊!
- 面试:说说你对 Java 中 final 的理解?
- 轻量级网络主干综述 20种
- rpm version `XZ_5.1.2alpha‘ not found