毕业设计有个远程协助功能得到对方的屏幕后老是会闪很是不爽今天用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() ;
}
}
}