是否可以更新vaadin模式窗口的组件?

时间:2016-11-27 12:33:46

标签: vaadin vaadin7

从java swing我习惯于为长时间运行的任务显示模态对话框。后台线程会不时更新对话框中的状态标签和进度条。

使用vaadin模态窗口,我无法从后台线程更改任何内容,我甚至无法关闭窗口。

这是预期的行为还是我做错了?

编辑:实际上我似乎无法更新窗口,即使它是非模态的。

Window window = new Window();
// window.setModal(true);

VerticalLayout layout = new VerticalLayout();
Label label = new Label("0");
layout.addComponent(label);
window.setContent(layout);
window.center();

new Thread(() -> {
  try
  {
    Thread.sleep(1000);
    System.out.println("update 1");
    UI.getCurrent().access(() -> label.setValue("1"));
    Thread.sleep(1000);
    System.out.println("update 2");
    UI.getCurrent().access(() -> label.setValue("2"));
    Thread.sleep(1000);
    System.out.println("update 3");
    UI.getCurrent().access(() -> label.setValue("3"));
    Thread.sleep(1000);
    System.out.println("close");
    UI.getCurrent().access(() -> window.close());
  }
  catch(InterruptedException e)
  {
    System.out.println(e);
  }
}).start();

UI.getCurrent().addWindow(window);

编辑2:我偶然发现了vaadin push concept,这可能就是我在这里所缺少的。

1 个答案:

答案 0 :(得分:0)

原因是我没有配置vaadin push

将vaadin-push依赖项和@Push批注添加到我的主UI后,它开始起作用。

现在转到next problem ...