从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,这可能就是我在这里所缺少的。
答案 0 :(得分:0)