瓦丁"run later"函数?



我想在我的vaadin应用程序中将一些日志字符串附加到textArea

VaadinSqlApplication.logger.info("Export start");
logTextArea.setValue("Export Start");
...
logTextArea.setValue("Export done");

textArea在整个功能结束后才发生变化。有没有像JavaFX这样的功能:

Platform.runLater(new Runnable() {
                @Override
                public void run() {
                    //change text
            });

或摆动:

    EventQueue.invokeLater(changer);
您需要

在Vaadin UI上启用"push",因为默认情况下,对UI的所有更新都将分组并作为单个响应发送(就像您说的:当函数返回时)。

看看这个页面,它很好地解释了整个设置:

https://vaadin.com/docs/v8/framework/advanced/advanced-push.html

顺便说一句,启用推送后,您将需要与您提到的SwingUtilities.invokeLater类似的技术:

从另一个线程对 UI 对象进行更改并将其推送到 浏览器在访问 UI 时需要锁定用户会话。 否则,从另一个线程完成的 UI 更新可能会与 定期事件驱动的更新,并导致数据损坏或 僵局。因此,您只能使用 access() 方法,它锁定会话以防止冲突。它 将它执行的 Runnable 作为其参数。

例如:

ui.access(new Runnable() {
    @Override
    public void run() {
        ...
    }
});

最新更新