2016-11-27 9 views
0

java swingからは、長期実行タスクのモーダルダイアログを表示するのに使用されています。バックグラウンドスレッドは、時々ダイアログのステータスラベルとプログレスバーを更新します。vaadinモーダルウィンドウのコンポーネントを更新することはできますか?

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

なぜなら、vaadin pushが設定されていなかったからです。

メインUIにvaadin-push依存関係と@Pushアノテーションを追加した後、動作し始めました。

今度はnext problem ...