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五七
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询