`
lggege
  • 浏览: 375467 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SWT 添加全局的监听

    博客分类:
  • RCP
阅读更多

Display 有这么一个方法:

 

public void addFilter (int eventType, Listener listener)

 

具体使用代码:

       Display.getDefault().addFilter(SWT.KeyDown, new Listener() {

           public void handleEvent(Event e) {

              if ((e.stateMask == SWT.CTRL) && (e.keyCode == 'a')) {

                  System.out.println("XXXX");

              }

           }

       });

上面的代码给Display添加一个Filter, 这个Filter监听Ctrl+a事件.

 

 

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

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

 

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

 

正由于Display的Filter比其他的监听先执行, 所以, 还更强大的功能就是: 你可以在handleEvent中阻拦event的向下传递[通知其他的监听者], 或者, 任意修改event的属性.

 

正由于Display的Filter这么强大和危险,慎用!

分享到:
评论
8 楼 heshifk 2015-11-02  
我今天用这个也遇到了一个问题,当焦点在别的组件上面,也添加了快捷键,点击别的快捷键,执行完之后会自己执行焦点对应的组件
7 楼 wuzijingaip 2011-12-06  
不是系统热键啊!!!
6 楼 foohsinglong 2010-12-07  
为什么我一定要在eclipse里面才能用?要把界面话出来吗?
5 楼 lggege 2009-06-04  
注意:
    由于是添加到Display的监听, 一定要记得removeFilter.
4 楼 shijiyu 2009-04-10  
但是 如果把焦点从这个Display移开的话好像就监听不到了也 我觉得这个与系统热键有点关系
3 楼 xykpermit 2008-12-12  
。。。
“正由于Display的Filter这么强大和危险,慎用!”,这行字好小,就像香烟盒上的“吸烟有害健康”一样。。。。
非常感谢lggege
2 楼 zhangcheng 2008-12-12  
我也学到东西了
1 楼 lformat 2008-12-03  
不错,又学到东西了

相关推荐

    SWT内存泄露解决办法

    3. **避免全局变量和静态变量持有 SWT 对象**:全局和静态变量的生命周期很长,可能导致对象长时间保持在内存中。尽量避免使用,或者在不再需要时手动置为 null。 4. **谨慎处理图像资源**:图像加载后应妥善处理,...

    org.sf.feeling.swt.win32.extension.zip

    这个包是用来进行java本身无法完成的鼠标全局监听的包,本项目提供了一个软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。 使用SWT Win32 Extension,您将不需要创建...

    SWT深入内幕之消息机制探秘

    - SWT定义了一系列事件监听器接口,例如`SelectionListener`,这些接口定义了方法用于响应特定类型的消息。 - 当创建一个控件时,可以通过注册监听器来捕获特定类型的事件。 2. **消息包装**: - 对于每一条从...

    JAVA实现按键精灵效果

    4. 设置全局钩子:使用JNA的Platform类和`swt.win32.extension`中的函数,如SetGlobalHook,来安装全局键盘钩子。你需要提供钩子处理函数的指针,以及钩子类型(如WH_KEYBOARD_LL表示低级键盘钩子)。 5. 监听和处理...

    springmvc中文和英文帮助API,chm格式

    3. **可扩展性**:SWT库可以通过插件进行扩展,添加新的控件或功能。 4. **数据绑定**:SWT支持数据绑定,可以方便地将模型数据与用户界面元素关联起来。 5. ** SWT/JFace**:JFace是基于SWT的一个抽象层,提供了...

    java控制windows鼠标键盘

    SWT提供了`Display`和`Shell`对象,以及各种`Widget`,如`Button`, `Text`等,它们都有对应的事件处理机制,可以通过监听和响应这些事件来实现键盘和鼠标的控制。 在"Touch 控制鼠标 键盘 控制"这个标签中,我们...

    Eclipse插件开发学习笔记(ch15-17)

    1. ** SWT(Standard Widget Toolkit)和JFace**:Eclipse的UI构建基于SWT和JFace库,它们为创建对话框和向导提供了基础组件。 2. **Dialog类**:了解`Dialog`基类及其子类,如`MessageDialog`、`InputDialog`,用于...

    RCP.preference

    4. **Preference Bindings**:使用SWT和JFace的数据绑定机制,开发者可以将用户界面元素与偏好设置关联起来,使得界面元素的更改能够自动反映到偏好存储中,反之亦然。 5. **Preference Change侦听器**:开发者可以...

Global site tag (gtag.js) - Google Analytics