我已经编写了一个SWT UI,它具有在StyledText控件中显示文本的主要功能。我想为添加处理程序Ctrl + F以便当按下该快捷键时,焦点被设置为搜索框。我曾尝试使用以下代码来检测按键。如何在我的SWT应用程序中检测ctrl-f
sWindow = new Shell();
...
sWindow.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
@Override
public void handleEvent(Event e)
{
System.out.println("Filter-ctrl: " + SWT.CTRL);
System.out.println("Filter-mask: " + e.stateMask);
System.out.println("Filter-char: " + e.character);
}
});
我期待,当我按下Ctrl键+˚F我会看到下面的输出:
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: f
然而,在实践中我居然看到以下内容。
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: <unprintable char - displayed as a box in eclipse console>
我有两个问题:
- 是Display.addFilter(...)来添加全局快捷方式的最佳方式?我试过Display.addListener(...),但是这根本没有收到任何事件。
- 为什么我在按下时没有按下字符Ctrl?当我按住Alt或Shift时,我会得到预期的面具和被按下的角色。
这是一个很好的答案 - 我现在有了我的捷径。谢谢!我会尽量在下次更好地阅读文档! – mchr 2011-05-01 08:08:46
这也解决了我的问题,谢谢你的明确解释! +1 – 2011-09-07 11:47:22
如何通过添加像这样的过滤器来覆盖像ctrl + c这样的系统快捷方式? – Fahad 2015-05-20 05:16:14