【问题标题】:how to replace keycode by another in vaadin framework?如何在vaadin框架中用另一个替换keycode?
【发布时间】:2012-01-04 18:12:21
【问题描述】:

我需要设置 ENTER 键以在 com.vaadin.ui.Panel 上的启用字段之间导航。我怎样才能以编程方式做到这一点?

这是我的意图,但现在不知道如何发送按键:

Action ENTER_KEY_ACTION = new ShortcutAction(
         "Enter key"
        , ShortcutAction.KeyCode.ENTER
        , null
        );

public Action[] getActions(Object target, Object sender) {
    return new Action[] { ENTER_KEY_ACTION};
}

public void handleAction(Action action, Object sender, Object target) {
    if (action == ENTER_KEY_ACTION ) {
        ENTERKeyHandler();
    }
}

protected void ENTERKeyHandler(){
   //
   //here i need to send a TAB keyPress
   //
}

到目前为止,这段代码运行良好,但还没有结束。不知道有没有其他方法可以做到这一点? 请原谅我的英语。

【问题讨论】:

    标签: user-interface vaadin


    【解决方案1】:

    AbstractComponent 类为此提供了一个方法(您的字段对象扩展了 AbstractComponent)。该方法称为fireEvent(Component.Event event)

    您可以尝试使用这种方法向已注册的侦听器发送事件。

    【讨论】:

    • 感谢您的回答。但我试图在 Panel 实例级别执行此操作,另一方面,fireEvent 被声明为受保护的方法。我认为这样我就需要将 AbstractComponent 子类化,这对于所有类别的重点组件的未来发展来说太复杂了。我正在尝试仅使用 vaadin 组件和一些插件,但还没有使用我自己的组件。还是谢谢
    【解决方案2】:

    尝试将FocusListener 添加到面板中的字段,以跟踪当前关注的字段。您还必须知道服务器端字段的 Tab 键顺序,并在 ENTERKeyHandler() 方法中调用 field.focus() 以使字段获得焦点。

    【讨论】:

    • 谢谢亨利。我将尝试以这种方式为此创建一些遍历焦点策略和处理程序,保持必须简单的方式,首先需要稍微搜索一下这种已经实现的东西。我不想重新发明轮子。
    猜你喜欢
    • 2018-12-15
    • 2021-07-26
    • 2021-02-18
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多