如何关闭vaadin中的窗口?

时间:2017-03-29 10:27:57

标签: java window vaadin

我有类MyCustomWindow,它从vaadin扩展Window(com.vaadin.ui)。 单击某个按钮时,MyCustomWindow将显示。 现在我想在这个窗口中添加按钮,当你按下这个按钮时它会关闭窗口。 我有问题用什么来删除这个窗口。 我找到了:

Window w = getWindow();
getApplication().removeWindow(w);

Window w = this.findAncestor(Window.class);
w.close();

但它不起作用。 我想从课堂内删除窗口,而不是从外面删除窗口,使用“this”?类似的东西:

UI.getCurrent().removeWindow(this);

我正在使用vaadin 7。 你能救我吗?

3 个答案:

答案 0 :(得分:2)

您好,如果您想从点击监听器中关闭窗口,您可以执行以下两项操作之一:

yourButton.addClickListener(new Button.ClickListener() {
            @Override
            public void buttonClick(Button.ClickEvent event) {
                MyCustomWindow.this.close();
            }
        });

或者:

yourButton.addClickListener(new Button.ClickListener() {
            @Override
            public void buttonClick(Button.ClickEvent event) {
                closeMyCustomWindow();
            }
        });

private void closeMyCustomWindow(){
   this.close();
}

closeMyCustomWindow()此函数位于MyCustomWindow类中。

答案 1 :(得分:1)

您可以使用此代码删除所有窗口。

for (Window window : UI.getCurrent().getWindows())
        {

            UI.getCurrent().removeWindow(window);
            window.close();
        }

但是如果您已经引用了窗口,那么您需要的是:

UI.getCurrent().removeWindow(window);

答案 2 :(得分:1)

迭代时无法修改窗口。首先复制该集合。

for (Window window : new ArrayList<>(UI.getCurrent().getWindows())){
   window.close();
}

在getWindows上迭代时删除窗口会抛出并发修改异常。