程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中的雙緩沖技術

java中的雙緩沖技術

編輯:關於JAVA

畢業設計有個遠程協助功能,得到對方的屏幕後,老是會閃,很是不爽,今天用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(Myjxta.image!=null)
{
this.setPreferredSize(new Dimension(Myjxta.image.getWidth(),Myjxta.image.getHeight()));
g.drawImage(Myjxta.image, 0, 0, this);
}
try
{
Thread.sleep(200);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void update(Graphics g)
{
if (Myjxta.image != null)
{
off_screen_buf =this.createImage(this.getWidth(),this.getHeight());
off_screen_gc = off_screen_buf.getGraphics();
paint(off_screen_gc);
off_screen_gc.dispose();
g.drawImage(off_screen_buf,0,0,null);
this.repaint() ;
}
}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved