我有一个关注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创建字段。创建窗口后,我将组件字段设置为导致窗口打开的字段。但正如我所说 - 我认为这是一种解决方法。
答案 0 :(得分:0)
我不知道使用服务器端代码处理焦点的任何通用方法。关闭窗口后,我一直在使用2种方法来控制焦点:
方法2也可以扩展到更多的完整案例。例如,确认对话框可能有侦听器处理是和否答案,您可能希望根据答案关注不同的组件。
为了使快捷方式侦听器保持正常工作,最好至少在UI对象中使用焦点。
你也应该知道Vaadin bug #5891,它可能会把焦点放在关闭窗口上。