java - 在 JApplet 类中使用带有 repaint() 的线程会导致其在绘制上出现 "paint"

标签 java multithreading repaint japplet

我试图理解本教程,我查找了有关使用 Java 来使用小程序的教程( http://www.javakode.com/applets/06-threads/ ),但我遇到了问题。

每当我使用线程repaint()时,之前生成的图像都不会消失。它停留在屏幕上并绘制新图像。但这仅在我使用 JApplet 类时发生,但是当我使用 Applet 类时它工作得很好。

可能出了什么问题?是我的事吗?

最佳答案

问题是,该示例不支持绘制链。 Paint 将其操作委托(delegate)给许多子方法,其中之一实际上清除 Graphics 上下文,准备绘画...

绘制 AWT 组件的机制与绘制 Swing 组件不同

我建议...

  1. 将自定义绘画移至单独的组件,例如 JPanel。它是双缓冲的,可以防止组件重新绘制时出现闪烁。
  2. 通读一下 Performing Custom PaintingPainting in AWT and Swing
  3. 通读一下 Concurrency in Swing
  4. 使用 JFrame 代替,它更简单......

关于java - 在 JApplet 类中使用带有 repaint() 的线程会导致其在绘制上出现 "paint",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829029/

相关文章:

.net - 查找 .NET 多线程瓶颈

java - 具有多个限制的线程池

css - 在 Modernizr 完成将类名应用到 'Body' 后,重新应用所有 css 样式(外部样式表和内联样式)

java - 如何强制 ANTLR 解析所有输入的 CharStream

java - 为什么我在类中实现 math.random 只返回 0?

java - 堆增长和下降

c - C是单线程语言吗

java - 将变量从 Servlet 发送到 JSP

java - PaintComponent 中应该有什么来拖动和旋转图像?

Java:Swing 中的重绘不起作用