2012-10-19 85 views
2

我正在創建一個繪圖儀,根據定期更新數據點來繪製(繪製)數據點&。如何繪製和重繪/更新JPanel的內容(不是背景)組件?

我在JFrame內部使用JPanel作爲繪圖畫布。

JPanel包含行軸&其他信息(比例等)爲背景。它還包含更新數據點,如內容

我想在獲取新數據後定期更新JFrame的內容。 數據點提取部分完成&工作正常。

這是我的代碼:http://pastebin.com/SAEjNT1Rhttp://pastebin.com/WvPTyEfR(面板類)。

主營:

面板對象類:

這將在OraclePinger包(不是真的需要,如果ü想運行):在引擎收錄Wdmd3q1t(連接器類),MycAgyu3(目標類)
最初由甲骨文 - 由我修改:docs.oracle.com/javase/1.4.2/docs/guide/nio/example/Ping.java

我只是與Jpanel拉引部分困惑。我希望能夠繪製背景一次,然後定期刷新/清除&重繪內容。

---說明如果在刷新時無法分離背景&內容..我們只能清除面板中的所有組件。我可以至少打個電話給panel.clearAllComponents(); panel.draw(TheBackGround +內容)(重複)來自主

我該如何解決這個問題?

感謝

+1

查找'javax.swing.Timer',查找[示例](http://stackoverflow.com/a/3256941/230513)。 – trashgod

回答

4

我不能看,由於工作有關防火牆的限制,但無論鏈接,因爲你問志願者免費諮詢,你真的應該在這裏張貼相關的代碼,以使您更輕鬆儘可能爲我們提供幫助。也就是說,在JPanel的paintComponent方法中顯示的BufferedImage上繪製圖的不變部分,然後可能通過循環訪問數據點的ArrayList,在JPanel的paintComponent方法中繪製更改的部分。

+0

+1'ChartPanel'包含一個可選的'useBuffer'參數。 – trashgod

4

如果您使用的是JFreeChart,這裏有一個相關的example,它使用javax.swing.Timer來調整動畫的速度。請注意,JFreeChart會根據設計更新每個增量上的整個繪圖。

+0

謝謝。現在,我會嘗試繪製2個面板。 1代表BG,1代表JFrame中透明的內容。 –

+0

某些渲染器,如'org.jfree。chart.renderer.category.AreaRenderer',支持alpha透明。 – trashgod