Vaadin获得专注元素

时间:2017-08-21 19:41:26

标签: javascript java vaadin vaadin7

我有一个关注Vaadin的问题。当我在例如打开新窗口(对话框)时发生问题。按钮点击:

new Window(caption, component);

当Window关闭时,执行方法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创建字段。创建窗口后,我将组件字段设置为导致窗口打开的字段。但正如我所说 - 我认为这是一种解决方法。

1 个答案:

答案 0 :(得分:0)

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

  1. 将Focusable作为扩展窗口的类中的字段并专注于关闭
  2. 使用close listener并将下一个组件集中在那里
  3. 方法2也可以扩展到更多的完整案例。例如,确认对话框可能有侦听器处理是和否答案,您可能希望根据答案关注不同的组件。

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

    你也应该知道Vaadin bug #5891,它可能会把焦点放在关闭窗口上。