我在这里尝试归档的是使用向上和向下箭头键在控件内遍历 代码在显示对象中是这样的。可能看起来很奇怪,但这是一个要求:-/
displayObj.addFilter(SWT.KeyDown,new Listener() {
public void handleEvent(Event event) {
Control ctrl= (Control) event.widget;
if(event.keyCode==SWT.ARROW_UP) {
ctrl.traverse(SWT.TRAVERSE_TAB_PREVIOUS);
} else if(event.keyCode==SWT.ARROW_DOWN) {
ctrl.traverse(SWT.TRAVERSE_TAB_NEXT);
}
}
});
这对于文本和组合框效果很好。但第三个字段是一个按钮 (compositeObj,SWT.CHECK
),此时此方法不起作用,因为会生成 SWT.FocusOut
事件,并且焦点会移至下一个按钮“确定”“取消”而不是紧随其后的组合框。选项卡遍历以正确的顺序正确发生,如文本、文本、按钮、组合、按钮和按钮。
无法使用 FocusListener
,因为无法单独处理向上和向下箭头事件。
还有其他方法可以做到这一点吗?预先感谢您的回复。
最佳答案
在按钮上使用如下所示的 TraverseListener 解决了问题。
cancelButton.addTraverseListener(new TraverseListener () {
public void keyTraversed(TraverseEvent e) {
e.doit=false;
if (e.keyCode==16777218) {
userIdText.forceFocus();
} else if (e.keyCode==16777217) {
connectButton.forceFocus();
}
else {
//do nothing,i guess;
}
}
});
无论如何,谢谢。
关于java - 使用向上和向下箭头键遍历 - 处理 Button 的 FocusOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211668/