2010-11-17 36 views
4

我正在制作一个包含java.awt.Canvas的应用程序,以便在图形中显示一系列连接节点。在编辑时,最后一个点用鼠标光标键入java.awt.geom.Line2D,以便每次用户移动鼠标时都必须重新绘制它,并在屏幕上引起令人厌恶的闪光效果。画布在不断重新粉刷时闪烁

我这样做一次,之前,我知道解决的办法是那么容易,并不需要一个很艰难的代码,但乱用paint(g)repaint(g)update(g)方法周围,尽管它,我不能设法解决它,希望可以有人帮帮我!

提前致谢! :)

+0

什么是Canvas? – Mot 2010-11-17 11:32:11

+0

查看Java API java.awt.Canvas类。 '画布组件表示应用程序可以在其上绘制屏幕的空白矩形区域,或者应用程序可以从中捕获用户输入事件。 – DaveJohnston 2010-11-17 11:51:22

回答

4

你需要做双缓冲摆脱闪烁。大量的例子,如果你谷歌它。

发现之前有question有更多的信息。 这是另一个example

+0

谢谢埃里克,我已经想过双缓冲,但我确信有一个更容易的选择,我确实已经找到了网络,但现在我不记得了(事实是,我编程这一次之前,但我失去了唯一的副本,因为我没有备份)::( – Dane411 2010-11-17 13:10:23

+0

我在接受的答案中看到,在你给我这段代码的链接中: public void update(Graphics g){ //覆盖这个因为默认实现总是 //先调用clearRect,导致不需要的闪烁 油漆(g); } }基于评论似乎是我第一次采取的解决方案,但现在似乎并没有工作,因为我一直看到这些闪光 这次可能发生了什么不能工作? – Dane411 2010-11-17 13:27:40

+0

@ Dane411 - 自1998年以来,我还没有为大学课程做过任何双缓冲,但它确实应该非常顺利。尝试另一个例子或谷歌它。如果你不能让它工作发布代码,也许有人可以帮助你 – willcodejavaforfood 2010-11-17 14:38:36