【问题标题】:How to close window in vaadin?如何在vaadin中关闭窗口?
【发布时间】:2017-03-29 10:27:56
【问题描述】:

我有类 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。 你能帮帮我吗?

【问题讨论】:

    标签: java window vaadin


    【解决方案1】:

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

    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 类中。

    【讨论】:

      【解决方案2】:

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

      for (Window window : UI.getCurrent().getWindows())
              {
      
                  UI.getCurrent().removeWindow(window);
                  window.close();
              }
      

      但是,如果您已经参考了该窗口,您所需要的只是:

      UI.getCurrent().removeWindow(window);
      

      【讨论】:

      • 很好,但我想使用“this”从课堂内部而不是外部移除窗口?
      • 你可以从任何类调用 UI.getCurrent()。
      • 你可以在任何地方使用这个循环,它会删除所有的窗口。
      • 我想做类似的事情: UI.getCurrent().removeWindow(this);我不想只删除一个“我在”中的所有窗口。
      • 只有当 'this' 是你的窗口时,你才能这样做
      【解决方案3】:

      迭代时不能修改窗口。先复制集合。

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

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

      【讨论】:

        猜你喜欢
        • 2013-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-25
        相关资源
        最近更新 更多