Java 窗口绘制问题

标签 java system awt startup paint

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

此问题只出现在 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/

相关文章:

java - Core Java 这个简单语法有什么问题

c# - 当我为所述类编写自己的包装器时,如何将 'hide' 内置于类中?

c# - 获得唯一的机器ID

java - 在 System.out.println() 中输出

java - 如何在 JPanel 上保存图形的当前状态

java - 为什么 JPanels 不显示?

java - Neuroph Image Recognition Plugin 是否正确地将 RGB 图像转换为黑白图像?

java - 多线程矩阵乘法性能问题

java - vlcj播放视频黑屏

java - JPanel棋盘不显示