1

所以我为一个班级写了一个小程序。我将它设计为一​​个未修饰的 JFrame 中的 JApplet,而不是在浏览器中。除此之外,它是一个简单的绘图程序。单击两个点以绘制选定的形状,然后调用重绘。我遇到的问题是,当您在程序移动到我的辅助监视器时进行绘制时,整个 JApplet 似乎消失了,只显示绘制的形状。它仅在选择第二个点后消失,所以我认为它在 repaint() 上执行此操作。

我的辅助显示器使用完全相同的品牌和分辨率,甚至颜色配置文件。

任何其他技术细节,我正在使用 Java 1.7(不记得我脑海中的哪个更新),Windows 8 Enterprise 64x,使用 Eclipse 的“运行”按钮进行测试。

提前感谢您的帮助!

4

1 回答 1

2

我确实在调用 getGraphics(); 在 JApplet 的 init() 方法中..

那就是问题所在。该Graphics对象是一个瞬态的东西,下次 JVM 认为有必要这样做时,它将被重新绘制。这可能是由以下原因触发的:

  • 更改窗口的大小或位置。
  • 用另一个程序覆盖它,然后删除覆盖应用程序。
  • 添加新组件或更改显示的值。

有关如何执行您尝试实现的目标的更多详细信息,请参阅执行自定义绘画。OTOH Swing 有一个JLabel可以显示BufferedImage. 您可以按照您想要的方式使用BufferedImage。更新后,调用repaint()标签查看效果。

于 2013-04-29T15:02:28.630 回答