我似乎遇到了在JFrame上绘制背景图片的问题。所有其他图标都正确绘制,但背景图像似乎被跳过。变量backgroundImg是一个ImageIcon(声明像我的大多数其他图标),它应该被设置为我的JFrame的背景,其中其他图标将被绘制在它上面。可能是这样的情况,图形功能是Java不会绘制多个图标,但我不确定。这是代码:
private ImageIcon backgroundImg = new ImageIcon("image/back.PNG");
private String name;
private long score=0;
private static final Dimension backgroundSz = new Dimension(1024,768);
...................................................
public GamePanel()
{
setPreferredSize(backgroundSz);
setBackground(Color.black);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
this.backgroundImg.paintIcon(this, g, backgroundImg.getIconWidth(),
backgroundImg.getIconHeight());
}
为了进一步解释这个问题:背景图像应该是一个星形场,它应该在主游戏面板上绘制。但是,结果是每次都是黑色背景(在背景颜色中设置)。图像大小与帧大小相同。游戏开始后所有其他图像都被正确绘制,唯一的问题是背景图片。删除大部分描绘其他图像的代码后,仍然无法加载背景图像。
答案 0 :(得分:1)
现在paintIcon的x,y参数不是宽度/高度,这似乎是错误。
一般来说,我有点不喜欢paintIcon方法,并且会存储Image并执行:
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(backgroundImg.getImage(), 0, 0, null);
}