因为每次鼠标拖动的时候,图形都么重绘,虽然你重载了update,但是由于你的面积比较大,所以失效面积也大,难以避免会有抖动的情况。所以如果用双缓冲的话,要好的多。给个双缓冲的例子你:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;public class  DoubleBuffer extends Applet
{
int gap=3;
int mx,my;
boolean flicker=true;
Image buffer=null;
int w,h;
public void init(){
  Dimension d=getSize();
  w=d.width;
  h=d.height;
  buffer=createImage(w,h);
  addMouseMotionListener(new MouseMotionAdapter(){
     public void mouseDragged(MouseEvent me){
   mx=me.getX();
   my=me.getY();
   flicker=false;
   repaint();
 }
 public void mouseMoved(MouseEvent me){
   mx=me.getX();
   my=me.getY();
   flicker=true;
   repaint();
 }
  });
}
public void paint(Graphics g){
  Graphics screengc=null;
  if(!flicker){
    screengc=g;
g=buffer.getGraphics();
  }
  g.setColor(Color.blue);
  g.fillRect(0,0,w,h);
  g.setColor(Color.red);
  for(int i=0;i<w;i+=gap)
  g.drawLine(i,0,w-i,h);
  for(int i=0;i<h;i+=gap)
  g.drawLine(0,i,w,h-i);
  g.setColor(Color.black);
  g.drawString("推拽鼠标转换到双缓冲模式",10,h/2);
  g.setColor(Color.yellow);
  g.fillOval(mx-gap,my-gap,gap*2+1,gap*2+1);
  if(!flicker){
    screengc.drawImage(buffer,0,0,null);
  }
}

public void update(Graphics g){
  paint(g);
}
}
/*
<APPLET CODE="DoubleBuffer" WIDTH="600" HEIGHT="600">
</APPLET>
*/