请高手指教,如何在绘图时消除闪烁?在线急等!!
我的代码如下:
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.Graphics;
import java.awt.event.*;
public class GraphApplet extends Applet implements Runnable, MouseListener {
private int delay=20;
Thread thread;
private int[] nPosXY;//存放坐标信息的数组,数组下标为x值,相应单元存的为y值
private int nOffset=0;//偏移量
public void init()
{
setBackground(Color.black);
nPosXY=new int[getSize().width];
for(int x=0;x<nPosXY.length;x++)
{
nPosXY[x]=(int)f(x);
}
}
public void start()
{
thread=new Thread(this);
thread.start();
nOffset=nPosXY.length;
}
public void stop()
{
thread=null;
}
public void run()
{
Thread current=Thread.currentThread();
while(thread==current)
{
try
{
Thread.currentThread().sleep(delay);
}
catch(InterruptedException e)
{
}
repaint();
if(nOffset>=nPosXY.length)
{//计算坐标
for(int i=0;i<nPosXY.length-1;i++)
{
nPosXY[i]=nPosXY[i+1];
}
nPosXY[nPosXY.length-1]=(int)f(nOffset);
nOffset++;
}
}
}
double f(double x)
{
return (Math.cos(x/5) + Math.sin(x/7) + 2)
* getSize().height / 4;
}
public void paint(Graphics g)
{
g.setColor(Color.green);
g.clearRect(0,0,getSize().width,getSize().height);
for(int i=0;i<nPosXY.length;i++)
{
g.drawLine(i,nPosXY[i],i+1,nPosXY[i+1]);
}
}
public void update(Graphics g)
{//重画
paint(g);
}
//......
}
在运行的时候由于在paint函数中用了clearRect所以导致画面有闪烁,请问有什么解决办法么?谢谢!