2010-11-09 24 views
2

有沒有簡單的方法可以在必要時禁用java applet中的雙緩衝? 我有一個Java applet,顯示和動畫樂譜,所以我需要它雙緩衝。然而,爲了教學目的,我需要打印這個小程序。問題是,在我添加緩衝區之前,打印機的輸出是基於矢量的,所以我可以使其達到我想要的那麼大,並且看起來很平滑(並且也使用更便宜的黑色墨水!),但是使用雙緩衝輸出當然是一個圖像,而且是一個相當低的資源!暫時禁用Java圖形applet中的雙緩衝

基本上我需要同樣的小程序使用雙緩衝,當它被稱爲與「display_tune」參數繪製直線圖形與矢量輸出,當它被稱爲與「view_tune」參數。

任何幫助非常感謝。

回答

2

你可以通過執行類似

yourComponent.setDoubleBuffered(false); 
// your print code 
yourComponent.setDoubleBuffered(true); 

方法在JComponent宣佈嘗試。我使用此解決方案從Jung圖中導出PNG,並且它工作正常。我不知道Jung是否會將組件內的方法置換到其他組件中,但在嘗試中沒有受到傷害。

+0

感謝你們兩位的回覆,你們似乎都指同一件事,所以我找到了一些信息http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial -Printing.html雙緩衝。我對java的使用經驗有限。我使用的是一個離屏圖像,所以不是g2d.drawLine()等,我正在寫offscreenImage.drawLine()。我認爲這不是你所指的標準雙緩衝?是否有一種簡單的方法,只需將「g2d」重命名爲「offscreenImage」即可使用打印版本的小應用程序? – jason 2010-11-09 14:32:42

2

您應該全局禁用雙緩衝,而不僅僅針對一個組件。 Swing有一種叫做RepaintManager的東西。它允許您啓用和禁用雙緩衝。