我试图理解本教程,我查找了有关使用 Java 来使用小程序的教程( http://www.javakode.com/applets/06-threads/ ),但我遇到了问题。
每当我使用线程repaint()
时,之前生成的图像都不会消失。它停留在屏幕上并绘制新图像。但这仅在我使用 JApplet
类时发生,但是当我使用 Applet
类时它工作得很好。
可能出了什么问题?是我的事吗?
最佳答案
问题是,该示例不支持绘制链。 Paint 将其操作委托(delegate)给许多子方法,其中之一实际上清除 Graphics
上下文,准备绘画...
绘制 AWT 组件的机制与绘制 Swing 组件不同
我建议...
- 将自定义绘画移至单独的组件,例如
JPanel
。它是双缓冲的,可以防止组件重新绘制时出现闪烁。 - 通读一下 Performing Custom Painting和 Painting in AWT and Swing
- 通读一下 Concurrency in Swing
- 使用
JFrame
代替,它更简单......
关于java - 在 JApplet 类中使用带有 repaint() 的线程会导致其在绘制上出现 "paint",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829029/