Java 将图像渲染到JPanel';s向后兼容性问题--我做错了什么?

Java 将图像渲染到JPanel';s向后兼容性问题--我做错了什么?,java,swing,Java,Swing,我一直在使用最新版本的java java 6为Eclipse中的学校作业编写战舰游戏,直到我意识到我需要为1.4.2 JRE提供兼容性 我一直小心地不使用1.4.2编译器中没有的任何特性和库类,我的代码编译得很好。问题是游戏的背景图像渲染不正确——只渲染左上角的一个小角 以下是显示我的问题的屏幕截图,以供参考: Java 6运行时环境下的游戏渲染 仅在1.4.2 JRE下渲染角点 当然,两个截图中的代码没有区别,只是运行时环境不同 背景绘制在可见的JPanel上,并使用setContentP

我一直在使用最新版本的java java 6为Eclipse中的学校作业编写战舰游戏,直到我意识到我需要为1.4.2 JRE提供兼容性

我一直小心地不使用1.4.2编译器中没有的任何特性和库类,我的代码编译得很好。问题是游戏的背景图像渲染不正确——只渲染左上角的一个小角

以下是显示我的问题的屏幕截图,以供参考:

Java 6运行时环境下的游戏渲染

仅在1.4.2 JRE下渲染角点

当然,两个截图中的代码没有区别,只是运行时环境不同

背景绘制在可见的JPanel上,并使用
setContentPane()
添加到JFrame中。将图像加载到程序中时没有错误

我做了很多测试,注意到我的输入处理程序只对包含图像的小角落内的输入做出响应,这意味着我的JPanel没有填满整个屏幕——但是我仔细检查了它的大小,它与JFrame的大小(800 x 600)匹配

下面是我的渲染代码:

public void render() {                               

        Graphics2D g = (Graphics2D) getGraphics();
        Graphics2D gb = (Graphics2D) buffer.getGraphics();

        gb.drawImage(background, 0, 0, null);

        gb.setColor(new Color(45, 45, 45));
        gb.setFont(new Font("Arial", Font.BOLD, 18));
        gb.drawString("Outwit the computer. Are you up for the challenge?", 175, 185);

        cont.draw(gb, contState);

        //Draw buffer to screen
        g.drawImage(buffer, 0, 0, null);

}
重复调用此方法以渲染游戏帧。它是JPanel类的一部分

我几乎什么都试过了,这是我最后的选择。这可能是旧运行时环境的一个bug吗?如有任何见解,将不胜感激


非常感谢。:)

如果没有你如何画这幅画的完整背景,很难判断你在做什么。例如,自定义绘制应该在JPanel的paintComponent()方法中使用传递给该方法的Graphics对象来完成。除非获取缓冲图像的图形对象,然后在缓冲图像上绘制,否则不应使用getGraphics()方法获取图形对象。你需要发表你的文章来证明这个问题。我不使用JDK1.4.2,但也许我可以注意到其他绘画问题。我只是尝试了一下paintComponent(),但仍然没有区别,小角落仍然只是再次被绘制。。。另外,感谢您提供有关getGraphics()的信息,我一定会在代码中考虑到这一点。:)我会把SSCCE贴出来。@Geoff:你已经“尝试过了”,但这并不能告诉我们你做了什么,或者为什么新代码不起作用。我支持camickr的建议:创建并提供一个让我们看到并测试您正在做什么的。