畢業設計有個遠程協助功能得到對方的屏幕後老是會閃很是不爽今天用java的雙緩沖技術解決了代碼如下本類重寫了Swing中的JLabel當Label重繪時會默認的調用它的update方法主要用於清除界面然後update方法會調用paint方法再把界面畫上去所以我現在update方法中創建了一個Image和Graphics對象Image off_screen_buf和off_screen_gc同時設置其大小和MyLabel對象的大小一樣用於把要畫的東東先繪制到後台內存中然後調用paint方法把要畫的圖像畫在上面最後再把內存中的圖像畫在前台上用off_screen_buf作為參數再調用repaint方法repaint方法回默認的調用update方法這樣圖像就能夠不停的顯示了
public class MyLabel extends JLabel
{
//雙緩沖技術
private Image off_screen_buf;
private Graphics off_screen_gc;
public void paint(Graphics g)
{
if(Myjxtaimage!=null)
{
thissetPreferredSize(new Dimension(MyjxtaimagegetWidth()MyjxtaimagegetHeight()));
gdrawImage(Myjxtaimage this);
}
try
{
Threadsleep();
}
catch(Exception e)
{
eprintStackTrace();
}
}
public void update(Graphics g)
{
if (Myjxtaimage != null)
{
off_screen_buf =thiscreateImage(thisgetWidth()thisgetHeight());
off_screen_gc = off_screen_bufgetGraphics();
paint(off_screen_gc);
off_screen_gcdispose();
gdrawImage(off_screen_bufnull);
thisrepaint() ;
}
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25758.html