2011-03-02 78 views
1

我想在我的Swing應用程序中顯示各種數據的圖表 - 但每個圖表的數據都會不斷變化。輕量級,不斷更新Java圖表

我的數據如何運作的一個很好的類比是系統的免費和使用內存將如何(可能)在整個應用程序運行過程中上下移動。我希望圖形看起來很好的一個比喻是Windows任務管理器中的CPU使用情況圖(並不是指特定的顏色和網格,而更多是線圖的外觀)。

什麼是生成圖表的最佳方式,我將不斷地「追加」新的數據點。定期追加這些點是否是最好的方法?

此外,我應該使用什麼圖表/圖形API?我想保持儘可能小的依賴性,但我認爲它們可能是必需的。

tl; dnr:我想在任務管理器中創建一個類似CPU使用歷史的圖表,但是在Java中,對於Swing。

回答

3

我認爲你可以自己做這件事,沒有自定義圖表應用程序。

您應該能夠將圖形點存儲在ArrayList中。然後,您可以使用Graphics.drawLine(...)方法連接每個點。

然後,您可以使用Swing Timer將更新安排到您的圖表。每當定時器啓動時,您都可以從開頭刪除多個點,並在結尾處添加多個點。然後,在您的自定義組件上調用repaint()。

+0

這可能是要走的路,讓我搗鼓它。 – 2011-03-02 12:38:06

+0

這[動態模型](http://sites.google.com/site/drjohnbmatthews/kineticmodel)有一個['Histogram'](http://sites.google.com/site/drjohnbmatthews/kineticmodel/code#Histogram )可能值得一看的類。 – trashgod 2011-03-02 19:31:29

+0

這實際上比我預期的要容易得多。去這個! – 2011-03-05 02:43:54

5

JFreeChart是在Java中生成圖表的常用選擇。

現在,計算機非常強大,以致於很難找到任何合理的製圖解決方案,對於此應用程序而言「太慢」。


參見:Using JFreeChart to display recent changes in a time series(道具@trashgod的鏈接!)。

+0

除了JFreeChart,還有其他的東西嗎?所有java相關的圖表總是有一個單一的答案。 – 2011-03-02 03:37:03

+1

@mP:[確定是](http://www.google.com/search?q=java+charts),但我從未使用過任何一種。 – 2011-03-02 03:41:13

+2

*「所有java相關的圖表總是有一個單一的答案。」* - 也許是因爲只有一個**好的答案......除非你願意把錢鎖定在供應商身上。 – 2011-03-02 04:22:59

2

看看JChart2D。來自網頁:

JChart2D是一個簡約的實時圖表庫,在OSI批准的GNU LESSER GENERAL PUBLIC LICENSE下發布。它設計用於顯示由跟蹤點組成的多個跟蹤。 JChart2D圍繞着一個可配置的擺動小部件:Chart2D。
JChart2D適用於工程任務,不適用於演示文稿。它的特點是運行時間 - 以最小的配置開銷動態精確顯示數據。