2013-05-13 147 views
-1

所以我有一個嵌入到JFrame中的java.applet.Applet。該applet使用java.awt.Canvas進行繪製。 的代碼將是相當多的,我張貼,並沒有「小」的例子,但這裏是一個圖片至少:停止閃爍/重繪

enter image description here 好了,所以在上面,在畫布上連續被小程序借鑑。當按下切換按鈕時,底部的JTextArea被隱藏,並且當沒有按下切換按鈕時顯示。

但是,每當我顯示/隱藏TextArea時,Applet/Canvas都會閃爍。每次顯示/隱藏TextArea時,都會調整JFrame的大小。

現在的小片段我有顯示/隱藏的樣子:

public void setConsoleVisible(boolean Visible) { 
    this.ScrollPane.setVisible(Visible); //Show/Hide the JTextArea. 
    frame.pack(); //Pack the JFrame to resize it. 
    frame.setSize(frame.getWidth(), frame.getHeight() + 1); //resize the frame by 1px. 
} 

我怎麼能阻止它,當它調整大小和顯示/隱藏的JTextArea閃爍?我的畫布/小程序已經雙緩衝。

+1

聽起來有點像混合重和輕量級組件。 AWT組件在執行自定義繪畫時以閃爍着稱,因爲它們不是雙緩衝 – MadProgrammer 2013-05-13 03:55:44

+0

嗯,但除了awt畫布和applet(不是JApplet)之外,我不能使用其他任何東西。原因是因爲這是我被告知要使用的並且被給予applet。我將它從Jar加載到JFrame中。 任何想法我可以做什麼?我在想,這是調整它的大小。 – Brandon 2013-05-13 03:58:12

+0

請嘗試使用活動繪畫。這將需要一個循環和捆綁主線程,但搖擺元素應該從EDT處理。 – Nikki 2013-05-13 04:01:56

回答

1

您正在繪製的區域可能小於可見區域。因此,一些垃圾被塗上造成閃爍。爲什麼你只調整一個像素的幀?嘗試刪除,

frame.setSize(frame.getWidth(), frame.getHeight() + 1);