我的应用程序不会在启动时自行绘制。当调整它的大小或最小化/最大化它时,应用程序的窗口被绘制。
此问题只出现在 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 中就足够了。
有人对我应该做什么或尝试其他什么有什么建议吗?
提前致谢
莫里斯
最佳答案
我的猜测是您正在覆盖 Frame.paint。通过绘制到 JPanel(或 Canvas,如果您坚持使用过时的 AWT),您可能会获得更好的结果,并且当您这样做时,请确保覆盖 JPanel 的 paintComponent,而不是绘制。在某些情况下,带有 ImageIcon 的 JLabel 可以更简单。
不过,正如其他人所建议的那样,尝试发布一个测试用例。
关于Java 窗口绘制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731455/