java.swing如何消除闪烁
publicvoidpaint(Graphicsg){Colorc=g.getColor();g.setColor(Color.LIGHT_GRAY);g.fillRec...
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.LIGHT_GRAY);
g.fillRect(0, 0, 806, 650);
g.setColor(Color.BLUE);
for (int i = 0; i < 40; i++)
for (int j = 0; j < 30; j++)
g.fillOval(3+20*i, 25+20*j, 21, 21);
g.setColor(c);
}
以上方法在一个线程里每500ms调用一次(即repaint()),出现闪烁,求教双缓冲的解决办法 展开
Color c = g.getColor();
g.setColor(Color.LIGHT_GRAY);
g.fillRect(0, 0, 806, 650);
g.setColor(Color.BLUE);
for (int i = 0; i < 40; i++)
for (int j = 0; j < 30; j++)
g.fillOval(3+20*i, 25+20*j, 21, 21);
g.setColor(c);
}
以上方法在一个线程里每500ms调用一次(即repaint()),出现闪烁,求教双缓冲的解决办法 展开
1个回答
展开全部
基本思路是先把内容画到一张虚拟图片上,再把张虚拟图片画到panel上
代码如下:
在类中加一个成员变量:
private Image offs = null;
//覆盖update方法:
public void update(Graphics g) {
if(offs == null){
//创建一张图片,指定图片长度和宽度
offs = createImage(width, height);
}
Graphics offsg = offs.getGraphics();//得到图片的画笔
paint(offsg);//在图片上画内容
//把图片画到panel中,参数依次为:图片,x坐标,y坐标,第四个都写null
g.drawImage(offs, 0, 0, null);
}
人问题加我:840,二三00五七
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询