【问题标题】:Vaadin get focused elementVaadin 获得焦点元素
【发布时间】:2017-08-21 19:41:26
【问题描述】:

我对专注于 Vaadin 有疑问。当我在例如打开新窗口(对话框)时会出现问题。按钮点击:

new Window(caption, component);

当窗口关闭时,方法 close() 被执行。 Window 类的实现:

public void close() {
    UI uI = getUI();

    // Don't do anything if not attached to a UI
    if (uI != null) {
        // focus is restored to the parent window
        uI.focus();
        // window is removed from the UI
        uI.removeWindow(this);
    }
}

如图所示,焦点设置在 UI 而不是导致窗口打开的组件上。有没有办法将组件焦点设置为例如导致窗口打开的按钮?我正在寻找一个通用的解决方案。我有一个解决方法,我正在扩展 Window 类并为 Component 创建字段。创建窗口后,我将组件字段设置为导致窗口打开的字段。但正如我所说 - 我认为这是一种解决方法。

【问题讨论】:

    标签: javascript java vaadin vaadin7


    【解决方案1】:

    我不知道使用服务器端代码处理焦点的任何通用方法。关闭窗口后我一直在使用两种方法来控制焦点:

    1. 在扩展 Window 的类中保持 Focusable 作为字段并专注于关闭
    2. 使用关闭侦听器并将下一个组件聚焦在那里

    方法 2 也可以扩展到更复杂的情况。例如,确认对话框可能有侦听器来处理是和否的答案,您可能希望根据答案关注不同的组件。

    为了让快捷方式侦听器保持正常工作,最好至少将焦点放在 UI 对象中。

    您还应该注意 Vaadin 错误 #5891,它可能会影响将焦点设置为关闭窗口。

    【讨论】:

    • 我的实现方式与您在第一点中描述的方式相同。但不幸的是,它不是通用的,需要对使用 Window 的组件进行大量更改。
    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多