SWT:Define a global keylistener for your Display

    技术2025-07-14  16

    Display 有这么一个方法:

    public void addFilter (int eventType, Listener listener)

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

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

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

    下面的代码来自

    http://www.vogella.de/articles/SWT/article.htmlDefine a global keylistener for your DisplayYou 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();  } }}

     

    最新回复(0)