SWTChart 在循环内时不重绘

SWTChart not redraw when it is inside a loop

如果我有以下循环:

Chart plot = new Chart(composite, SWT.NONE);
ISeriesSet seriesSet = plot.getSeriesSet();
ISeries series = seriesSet.createSeries(SeriesType.LINE, "Test");

for(int i=0; i<1000; i++) {
    points = ...
    series.setYSeries(points);
}

图表刷新不够快,即使我在循环中添加延迟也是如此。我不得不最小化 window 然后最大化它以查看更改,换句话说,它不会在每次循环后刷新,我试图通过在循环中添加以下行来强制刷新:

plot.redraw();
plot.layout(true, true);

但似乎它只在循环结束时刷新一次。在必须快速刷新图表时,是否有我应该遵循的最佳做法?

此代码 运行 正在 UI 线程中运行,并且会阻止 UI 更新,直到您 return 进入主 Display.readAndDispatch 循环。主UI线程中的代码必须快速执行,并尽快return进入主循环。 UI 仅在执行 readAndDispatch 时更新。

因此您不能在 UI 线程中使用简单的 for 循环来更新图表。

一种方法是在延迟后使用 Display.timerExec 到 运行 一步。

或者您可以启动后台线程并将循环放在那里。从后台线程,您必须调用 Display.syncExec 到 运行 更新 UI.

的代码