我做了个俄罗斯方块游戏,不过屏幕闪动很大,有什么办法解决??谢谢 可不可能只对局部进行刷新? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 闪烁的原因是你作图的时候需要重绘背景,而且你每画一个图形,画面变化一次,这样就显得在闪烁。 解决的办法是使用双缓冲技术,方法是:先将所有的图形画到一个看不到的东西上,然后一次性的把整张图画到要显示的地方。 具体做法:java里有一个类叫做Image,可以把他看作是一个画画的地方,不能直接看到他,他上面是可以作画的,先把所有的东西画到一个Image上,假如显示的地方是一个JPanel,使用JPanel的Graphics的drawImage方法可以把那个Image画到JPanel上,也就是显示出来。这样子就不会出现闪烁了。而且,窗体重绘的时候也只需要把Image重新画到JPanel上就行了。 Image img; // 生成引用 ...... img = jPanel1.createImage(width,length....); // Image 不能new , // 只能这样子创建,假设显示区域是jPanel1 ..... img.getGraphics().drawRectangle(...) //画矩形 img.getGraphics().drawOval(..) // 画圆 ...... ..... jPanel1.getGraphics().drawImage( img, ...._) // 显示出来 ...... 搞定。 楼上说的对 不过你也看看自己的代码 是不是还有什么要优化的 对的,我也做了一个俄罗斯方块,在他预显示的地方闪的比较多 怎么运行用记事本编写的java程序? 300分求JAVA连接PLC资料 在线等待 一个小问题的解答 如何把Java程序打包呢(打成安装包的东西) 如何关闭程序? switch case不能用于字符串吗?谢谢 请问tomcat到底该怎么配置?送100分!在线等! 我女朋友老师布置的一道简单的作业!要求用java实现。 Jdk在Linux上的安装问题 又找不到了 调用别的语言如何做呢~~~~~~~~~~ jbulder7中添加数据的问题
解决的办法是使用双缓冲技术,方法是:先将所有的图形画到一个看不到的东西上,然后一次性的把整张图画到要显示的地方。
具体做法:java里有一个类叫做Image,可以把他看作是一个画画的地方,不能直接看到他,他上面是可以作画的,先把所有的东西画到一个Image
上,假如显示的地方是一个JPanel,使用JPanel的Graphics的drawImage方法
可以把那个Image画到JPanel上,也就是显示出来。这样子就不会出现闪烁了。而且,窗体重绘的时候也只需要把Image重新画到JPanel上就行了。
Image img; // 生成引用
......
img = jPanel1.createImage(width,length....); // Image 不能new ,
// 只能这样子创建,假设显示区域是jPanel1
.....
img.getGraphics().drawRectangle(...) //画矩形
img.getGraphics().drawOval(..) // 画圆
......
.....
jPanel1.getGraphics().drawImage( img, ...._) // 显示出来
......
搞定。