有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaVaadin使用从数据库获取的数据每秒更新UI数据

有一个FieldGroup,它的数据源被设置为一个SQLContainer,配置为使用PostgreSQL数据库和FreeformQuery。另一个应用程序(不是webapp)每秒向数据库写入数据

如何立即使用新数据更新我的FieldGroup?我试图做的是设置ScheduledExecutorService,它将每秒从数据库获取数据并将其设置为FieldGroup。但它似乎不起作用-ScheduledExecutorService成功地从数据库获取数据,但UI没有更新。没有例外,UI只是没有改变

以下是我的ScheduledExecutorService的代码:

ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();

ses.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                SQLContainer latestData = DatabaseHelper.getLatestData();
                fieldGroup.setItemDataSource(latestData.getItem(id));
            }
}, 0, 1, TimeUnit.SECONDS);

我还尝试显示来自ScheduledExecutorServiceNotification.show("hello");的通知 但它没有效果-通知不会显示。所以,也许,除了主线程之外,不可能更改UI

那么,再一次,如何让我的UI每秒更新一次来自数据库的新数据?是否有可能不是每秒钟获取数据,而是在数据库发生更改时获取数据?我也读过关于从服务器到客户端的推送-它能帮助解决我的问题吗


共 (0) 个答案