如何在窗口外单击鼠标关闭Vaadin子窗口?

raf*_*ael 5 window vaadin vaadin7

我正在使用vaadin 7,在我的应用程序中,我有时会使用子窗口.在一个案例中,我有一个模态窗口,里面有几个组件.单击模态窗口内的某些组件时,它会打开另一个窗口.我希望这个窗口在用户点击它时自动关闭(例如再次在模态窗口上).在Vaadin采样器中,这种行为似乎在显示源时实现(单击右上角的源按钮).如果不是从模态窗口打开,则行为应该相同,但是从UI或任何其他子窗口打开.

我尝试了几件事:

  • 使用Popupview是不可能的,因为我需要从组件(按钮或图像)打开窗口

  • 将BlurListener添加到新窗口不起作用,因为如果我在窗口内单击,则会触发blurevent(例如移动窗口)

  • 将ClickListener添加到UI没有帮助,因为单击模式窗口时未触发事件.

实现这一目标的正确方法是什么?

谢谢拉斐尔

dze*_*zzz 0

您提到的 Vaadin Sampler 的行为依赖于非模态窗口:

 window.setModal(false); 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以将点击侦听器添加到窗口(或下的 UI/布局),其中关闭子窗口,例如。

 window.addClickListener(new MouseEvents.ClickListener() {

        @Override
        public void click(MouseEvents.ClickEvent event) {
            childWindow.close();         
        }
    });
Run Code Online (Sandbox Code Playgroud)

当窗口是模态时,其他组件无法访问,因此可能没有简单的方法来定义当前窗口之外可以触发的任何单击事件。