我有类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。 你能救我吗?
答案 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上迭代时删除窗口会抛出并发修改异常。