SWT:Define a global keylistener for your Display

Display 有这么一个方法:

public void addFilter (int eventType, Listener listener)

 也就是给Display添加一个全局的监听.比如:上面的为程序定义快捷键Ctrl+a.

这个Display的Filter很强大, 无论当前焦点在哪个控件上,都可以监听这个Ctrl+a的事件.

 如果界面中还有其他的控件也监听这个快捷键的话, 那么这个Display中的监听会比其他控件的监听先执行.

下面的代码来自

http://www.vogella.de/articles/SWT/article.html
Define a global keylistener for your Display
You can define a global keylistener on your display to listen globally to all key events as long as your application has focus. The following demonstrates this.


   package de.vogella.swt.listener;

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

public class GlobalListener {

 public static void main(String[] args) {
  Display display = new Display();
  Shell shell = new Shell(display);
  shell.open();
  display.addFilter(SWT.KeyDown, new Listener() {
   @Override
   public void handleEvent(Event event) {
    char c = event.character;
    System.out.println(c);
   }
  });

  while (!shell.isDisposed()) {
   if (!display.readAndDispatch())
    display.sleep();
  }
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值