java如何停止swt上的关键事件传播
我有文本小部件和文本小部件的按键事件
myText.addListener(SWT.KeyDown, new Listener() {
@Override
public void handleEvent(Event e) {
if (e.keyCode == Keys.ENTER || e.keyCode == Keys.CARRIAGERETURN) {
myButton.setFocus();
e.doit = false;
}
}
});
我需要将焦点设置在一个按钮小部件上,它有一个KeyListener
问题是,当我在文本小部件上按Enter键时,它也会触发按钮小部件的keyReleased
事件。如何停止按钮的keyReleased
事件
myButton.addKeyListener(new KeyListener() {
public void keyReleased(KeyEvent event) {
if ( event.keyCode == Keys.ENTER ) {
//do Something
}
}
});
我试过event.doit = false
,但没用
# 1 楼答案
我建议您不要使用自己的自定义
Keys
类,除非您的字段指向特定于SWT的键变量。(例如Keys.ENTER = SWT.TRAVERSE_RETURN
)从下面的SSCCE可以看到,
TraverseListener
首先得到通知。你可以取消那里的活动