移动到辅助监视器时,我的JApplet消失了

时间:2013-04-29 14:23:16

标签: java swing graphics japplet multiple-monitors

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

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

任何其他技术细节,我使用Java 1.7(不能记得哪个更新),Windows 8 Enterprise 64x,使用Eclipse的Run按钮进行测试。< / p>

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

  

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

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

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

有关如何执行您要尝试的内容的详细信息,请参阅Performing Custom Painting。 OTOH Swing的JLabel可以显示BufferedImage 可以 以您希望的方式使用BufferedImage。更新后,请在标签上调用repaint()以查看效果。