開發顯示後台計算結果的GUI 時,常見的任務是在新資訊出現時更新圖表的資料可用的。使用 JFreeChart,這可以透過修改底層資料集來實現。但是,如果資料集變更過於頻繁或以不同步的方式更改,則可能會出現錯誤,例如「系列索引越界」或「索引越界」異常。
要解決這些問題,需要建議從 SwingWorker 的 process() 方法更新資料集,這樣可以確保線程安全。此外,如果圖的域表示迭代次數而不是時間,則適合使用 NumberAxis 而不是 DateAxis。
範例:
以下程式碼示範如何使用SwingWorker 即時更新折線圖:
private XYSeries series = new XYSeries("Result"); ... @Override protected void process(List<Double> chunks) { for (double d : chunks) { label.setText(df.format(d)); series.add(++n, d); } }
此程式碼片段使用XYSeries 用於儲存資料片段點並在SwingWorker 的process() 方法中更新系列。標籤也會更新以顯示目前值。
其他注意事項:
以上是在 GUI 中更新 JFreeChart 系列時如何避免隨機錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!