java - 使用向上和向下箭头键遍历 - 处理 Button 的 FocusOut

标签 java events user-interface swt

我在这里尝试归档的是使用向上和向下箭头键在控件内遍历 代码在显示对象中是这样的。可能看起来很奇怪,但这是一个要求:-/

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/

相关文章:

java - 如何在 DropWizard View 上设置 cookie 并仍然返回 View ?

java - 避免在 JSP 页面中的下拉列表中重新加载数据

python - 输入通知事件信号不适用于 gtk.ToolButton

单线程应用程序中的 C# 事件处理

c# - Visual Studio - 坚持固定窗口?

Java - 如何使JFrame的内容出现在同一个窗口而不是多个窗口中

java - gradle 4.10 + java11 = spring(和许多其他库)的依赖版本检测问题

c# - .NET 中是否可以将类的成员对象的事件暴露给外部?

javascript - 在 native 底部选项卡导航器中更改屏幕时如何更改图标和文本的颜色?

java - 使用底部导航栏