JavaFX - 快速更改数据,GUI更新速度太慢

时间:2013-11-20 16:18:49

标签: java javafx

我有一个程序在外部计算机上进行某种计算。该程序发送有关其进度的信息,然后在GUI中显示。它大致类似于:

public void receiveData(final int step, final double errorRate)
{
    Platform.runLater(new Runnable()
    {
        @Override
        public void run()
        {
            stepLabel.setText(""+step);
            errorLabel.setText(""+errorRate);
        }
    }
}

通过外部计算机上的系统输出,我可以看到程序执行速度非常快。另一方面,GUI显示程序不够快。计算完成后,我仍然可以看到值发生变化,因为Platform.runLater()中的队列仍然包含带有更新的runnables。

如何加快变化?

如果GUI的值不够快,如果GUI没有显示值的每一个变化,那么也将是一个很好的解决方案。即,如果在步骤200的Platform.runLater()队列中有Runnable,但receiveData()收到201的值,则不需要显示200的值,因为它已经过时了。

1 个答案:

答案 0 :(得分:2)

您可以应用限制技术 - 将您的消息放入队列,每300ms选择最新或聚合/平均值。这样可以避免为UI安排过多的计划运行和更新。

此方法存在于RX *框架中,即RxJS中,但似乎尚未在RxJava中可用。