Welcome 微信登录

首页 / 软件开发 / JAVA / 使用SWT中Display的Post方法控制键盘

使用SWT中Display的Post方法控制键盘2011-04-13 blogjava VWPOLO最近在实现一个图片压缩的功能,想在Eclipse.org上看有没有办法能够通过SWT的API能 够改变图片的分辨率,Eclipse.org上面提供了好些SWT的例子,发现了Display的post方法挺 有趣的,以前没有注意到,现在赶快把它记录下来,post方法的参数为Event,通过制定这个 Events的属性,可以控制系统的键盘事件,比如保持shift键一直按着。下面是代码:

1 import org.eclipse.swt.*;
2 import org.eclipse.swt.widgets.*;
3
4 /**
5 * 触发系统的键盘事件。
6 * @author vwpolo
7 * <p>2009-6-1</p>
8 */
9 public class Snippet146 {
10
11 public static void main(String[] args) {
12 final Display display = new Display();
13 final Shell shell = new Shell(display);
14 final Text text = new Text(shell, SWT.BORDER);
15 text.setSize(text.computeSize (150, SWT.DEFAULT));
16 shell.pack();
17 shell.open ();
18 new Thread(){
19 public void run() {
20 String string = "Love the method.";
21 for (int i = 0; i < string.length(); i++) {
22 char ch = string.charAt(i);
23 boolean shift = Character.isUpperCase(ch);
24 ch = Character.toLowerCase(ch);
25 if (shift) {
26 Event event = new Event();
27 event.type = SWT.KeyDown;
28 event.keyCode = SWT.SHIFT;
29 display.post(event);
30 }
31 Event event = new Event();
32 event.type = SWT.KeyDown;
33 event.character = ch;
34 display.post (event);
35 try {
36 Thread.sleep(10);
37 } catch (InterruptedException e) {}
38 event.type = SWT.KeyUp;
39 display.post (event);
40 try {
41 Thread.sleep(100);
42 } catch (InterruptedException e) {}
43 if (shift) {
44 event = new Event ();
45 event.type = SWT.KeyUp;
46 event.keyCode = SWT.SHIFT;
47 display.post (event);
48 }
49 }
50 }
51 }.start();
52 while (!shell.isDisposed()) {
53 if (!display.readAndDispatch ()) display.sleep();
54 }
55 display.dispose();
56 }
57 }