SWT 模拟键盘事件

本文探讨如何在SWT环境中模拟键盘事件。由于Java AWT的Robot类在SWT中可能引发空指针异常,作者提出了一种通过实现Runnable接口生成并发送KeyEvent的解决方案。通过创建SimulateButtonDown类并配合KeyAdapter捕获处理,作者验证了该方法的有效性。在实验过程中,发现直接修改character属性无法达到预期效果,而修改keyCode则可以实现键盘事件的正确模拟。
摘要由CSDN通过智能技术生成

SWT 模拟键盘事件

导言

    在GUI设计中,我们往往要模拟鼠标和键盘事件,在java 的awt 中的java.awt.Robot; 类就可以进行模拟。但是在SWT中,我尝试了一下,会抛出空指针异常,或许是我写得有问题,或许是SWT不能用Robot类来模拟,这个我没有进一步去验证,感兴趣的同志们可以去尝试一下。
    下面来说说怎么在SWT中模拟键盘按键的按下。

思路

    实现一个Runnable接口SimulateButtonDown去生成一个KeyEevnet,然后发送出去给KeyAdapeter进行捕获处理。

验证

    为了验证上述方案是否可行,我写了一个只有两个按钮的简单GUI窗口。
    
SimulateButtonDown类:

package com.lks.test;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;

public class SimulateButtonDown implements Runnable {
   

    private char ch;
    private Display display;

    public SimulateButtonDown(char ch, Display display) {
        this.ch = ch;
        this.display = display;
    }

    /*
     * (非 Javadoc)
     * 
     * @see java.lang.Runnable#run()
     */
    @Override
    public void run() {

        Event e = new Event();
        System.out.println("before run : " + this.ch);//查看修改字符
        e.type = SWT.KeyDown;//修改事件类型
        e.character = this.ch;//修改相应的字符
        System.out.println("After run : " + e.character);//查看是否被正确赋值
        display.post(e);
    }

}

Windows类:

package com.lks.test;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值