我在SWT中为树添加了一个键监听器,当我按下Alt + Enter时,键事件的状态是keyCode = 65536,statemask = 0,当它应该是keyCode ='\ r'和statemask = 65536
下面是我写的代码片段 -
mViewer.getTree().addListener(SWT.KeyDown, new Listener() {
@Override
public void handleEvent(Event e) {
if(e.keyCode == SWT.CR && e.stateMask == SWT.ALT) {
e.doit = false;
}
}
});
Eclipse工作台在将事件委派给组件中的侦听器之前过滤了一些事件。有没有办法我可以禁用alt +输入不在其中一个树形浏览器上执行eclipse中的show属性?
最诚挚的问候, 凯沙夫
答案 0 :(得分:1)
请尝试以下代码:
mViewer.getTree().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.keyCode == SWT.CR && e.stateMask == SWT.ALT) {
// your code
e.doit = false;
}
}
});
您需要的进口商品:
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
答案 1 :(得分:1)
您将看到所有键/向下事件 - 即使该键是状态键。所以第一个事件是Alt
键关闭......
序列应为:
答案 2 :(得分:1)
您可以通过多种不同的方式覆盖特定查看器的特定全局命令:
Display
过滤器以执行相同的操作 - 可以在查看器控件的焦点输入/输出中添加/删除过滤器。我更喜欢这个最后的解决方案,因为我可以使用普通绑定扩展点从任何插件覆盖Viewer的特定键绑定...