2010-09-16 70 views
4

我的应用程序在启动时不会自行绘制。调整大小或最小化/最大化时,应用程序的窗口被绘制。Java Window绘制问题

此问题只出现在Windows机器上(我测试过XP,Vista和Windows 7)。在Mac OS X和Linux上,应用程序工作正常。

机器安装了java 6.我的应用程序使用AWT,所以不是Swing。我尝试使用Swing(所以JFrame代替Frame),但这并不能解决问题。

我检查了帧的repaint(),update()和paint()的调用。它们全部出现,并且可以绘制图像。我还检查了这些调用是否在EDT线程上完成。情况就是这样。当窗口被调整大小(或最小/最大值)时,paint()上的调用由系统完成,并且图像被绘制。

我的恐惧是我错过了一些非常明显的东西。我使框架可见,验证它(也用无效测试)并重绘它。这在Mac OS X和Linux中已经足够了。

有人对我应该做什么有什么建议,或者还有其他的尝试吗?

Thanx提前

莫里斯

+4

如何粘贴一些源代码? – pstanton 2010-09-16 23:15:04

+3

借调 - 这听起来像你很彻底,但如果你可以简化你的源代码到一个非常基本的例子,仍然存在同样的问题,并发布在这里,这肯定会有所帮助。 – 2010-09-16 23:54:58

回答

1

我的猜测是,你要重写Frame.paint。从绘画到JPanel(或Canvas,如果坚持过时的AWT),您可能会获得更好的结果,并且当您这样做时,确保您重写了JPanel的paintComponent而不是绘画。在某些情况下,带有ImageIcon的JLabel可以更简单。

但是,正如其他人所建议的,尽量发布测试用例。

0

很难在没有看到任何源代码的情况下诊断问题,但图像是否完全加载?

AWT在后台加载图像后,即使对Toolkit.getImage()的调用可能会返回有效的Image实例,但这并不意味着该图像在该时间加载。您可以使用MediaTracker来跟踪此情况。