`
liusu
  • 浏览: 171357 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SWT程序监听keyEvent的古怪问题

阅读更多
今天碰到一个超级奇怪的问题。

环境:

一个SWT程序,有两个Action注册,他们的Text值分别为;
Copy@Ctrl+C
Paste@Ctrl+V


然后在程序的主编辑器里面,有一个作为In-place的一个Text,Text有一个keyListener


public void keyPressed(KeyEvent evt) {
					boolean ctrl = ((evt.stateMask & SWT.CTRL) != 0);
					char ch = evt.character;
					Text t = (Text) evt.getSource();
					if (ctrl && ch == 3) {
						t.copy();
					} else if (ctrl && ch == 22) {
						t.paste();
					}
					super.keyPressed(evt);
				}
				

问题是:
当我按下CTRL键的时候,keyEvent正常。
当我按下C的时候,keyEvent正常。

当我按下CTRL+C的时候,Text抓取不到这个事件,keyEvent永远都只有keyCoe有值。

解决办法:
删除掉上面Action的CTRL+C / CTRL+V绑定。
Copy
Paste


I don't know WHY!!!!!!!!!!!
  • 大小: 16 KB
分享到:
评论
2 楼 liusu 2013-04-25  
这个事情过去好久了。。 等我下班回家把代码打开再验证下。。。 有心。
1 楼 小普洱他老爸 2013-04-17  
发生这个的原因是,eclipse本身有事件过滤机制。当注册成快捷键以后就加入到过滤事件表中去了。我截了张图如下:


请注意第7行: Display.filterEvent。完成这个过滤功能。
所以你捕捉不到!

相关推荐

    SWT JFace 按键、事件、监听

    ### SWT JFace 按键、事件、监听 #### 概述 SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形...

    SWT widgets基本教程

    在使用 SWT 构建应用程序之前,需要确保导入了 SWT 相关的包: ```java import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; ``` #### 3. 显示(Display)和窗体(Shell) SWT 的 GUI 应用程序通常由 `...

    org.eclipse.swt.win32

    org.eclipse.swt.events.KeyEvent.class org.eclipse.swt.events.KeyListener.class org.eclipse.swt.events.MenuAdapter.class org.eclipse.swt.events.MenuDetectEvent.class org.eclipse.swt.events....

    Robot键盘常量java.awt.event.KeyEvent。KeyEvent全部键盘按键映射整理KeyEvent枚举类

    Robot键盘常量java.awt.event.KeyEvent。KeyEvent全部键盘按键映射整理KeyEvent枚举类

    SWT事件一览表

    SWT(Standard Widget Toolkit)是Eclipse平台的一部分,主要用于构建基于Java的应用程序的图形用户界面(GUI)。SWT提供了一套跨平台的GUI组件库,它通过本地代码实现,能够生成与操作系统风格一致的界面,使得Java...

    Android 9.0 10.0 framework添加KeyEvent按键事件流程.rar

    ActivityThread是应用程序主线程,负责处理与UI相关的事件。 在ActivityThread中,事件会进入Looper-MessageQueue-Handler的消息处理机制。具体的,KeyEvent会被封装成一个Message,然后通过Handler发送到主线程的...

    keyevent.util.zip

    长时间监听和处理按键事件可能导致性能问题,因此"keyevent.util.js"可能已经进行了性能优化,如使用事件委托或节流/防抖技术,以减少不必要的计算。 总的来说,"keyevent.util.zip"提供的JavaScript库简化了遥控...

    swt事件处理的编码实现

    通过监听和响应各种用户交互,我们可以创建响应式且用户友好的应用程序。在给定的标题和描述中,我们关注的是鼠标的双击事件、键盘监听以及组件选择事件的处理。以下是这些事件的详细说明: 1. **鼠标双击事件**: ...

    Android onKeyDown监听返回键无效的解决办法

    为了解决Android中onKeyDown监听返回键无效的问题,我们需要先了解几个关键的知识点:Activity生命周期中的onKeyDown()方法、dispatchKeyEvent()方法以及onBackPressed()方法。 首先,onKeyDown()是Activity中的回...

    QT 键盘监听(重写监听事件)

    QT框架是Qt公司开发的一款强大的跨平台应用程序开发框架,它提供了丰富的API和工具,使得开发者能够在多种操作系统上构建GUI(图形用户界面)应用。在QT中,键盘输入处理是通过事件驱动模型实现的,我们可以利用QT...

    java事件监听方法和代码

    Java事件监听器即一组动作接口。如键盘事件KeyEvent对应的接口是: public interface KeyListener extends EventListener { public void keyPressed(KeyEvent ev); public void keyReleased(KeyEvent ev); public ...

    cocos2dx android 监听返回键

    cocos2dx android 监听返回键 ...通过重写 Cocos2dxGLSurfaceView 的 onKeyDown 方法,我们可以轻松实现返回键的监听功能,并在 Android 版本的 cocos2dx 游戏中实现确认退出或者toast 提示再次点击退出程序的功能。

    Android 跨进程模拟按键(KeyEvent )实例详解

    本文将详细讲解如何实现Android跨进程模拟按键(KeyEvent)。 首先,我们来看一个基本的发送按键事件的代码片段: ```java public static void simulateKeystroke(final int keyCode) { new Thread(new Runnable...

    java 使用KeyListener监听键盘

    在Java编程语言中,事件处理是用户界面(UI)应用程序的核心部分,允许程序对用户的交互做出响应。在本篇中,我们将深入探讨如何使用`KeyListener`接口来监听键盘事件,以便在用户按下、释放或键入特定键时执行相应...

    android 媒体键监听 以及 媒体键模拟

    开发者可以通过注册`BroadcastReceiver`,处理`ACTION_MEDIA_BUTTON`意图来监听媒体键,同时通过`KeyEvent`类可以模拟媒体键事件,为应用程序增添更多控制可能性。在实际开发中,这些技术可以灵活运用,以满足各种...

    java 监听windows系统热键组合

    标题提到的“java 监听windows系统热键组合”就是关于如何在Java程序中实现这一特性的技术点。 Java本身并不直接支持监听系统级的热键,但是有一些第三方库可以帮助我们完成这项任务。其中一个知名的库是...

    物理按键监听

    在Android系统中,物理按键监听是一项重要的功能,它允许开发者获取到用户对设备硬件按键的交互事件,如电源键、音量键等的按下和释放。这篇内容将深入探讨如何在Android 6.0(API级别23)及更高版本中实现物理按键...

    android keyevent事件

    5. **应用程序层**:应用程序接收到KeyEvent事件后,可以根据需求进行相应的处理。 #### 六、总结 通过对`gpio_keys`驱动的分析,我们可以看出Android输入子系统的强大和灵活性。开发者只需要遵循一定的设计模式和...

    SWT 自定义控件

    随着基于Eclipse平台的应用程序日益增多,开发者越来越依赖于SWT/JFace等提供的工具包来构建丰富的用户界面。然而,这些内置组件库虽然提供了大量的基础控件,但在特定场景下往往难以满足复杂的应用需求。因此,开发...

Global site tag (gtag.js) - Google Analytics