2014-12-05 73 views
1

我似乎在通过JFrame绘制背景图像时遇到问题。所有其他图标都正确绘制,但背景图像似乎被跳过。变量backgroundImg是一个ImageIcon(声明像大多数其他图标一样),它应该设置为我的JFrame的背景,其中的其他图标将被绘制在其上。它可能是这样的情况,图形功能是Java不绘制多个图标,但我不知道。下面是代码: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()); 


} 

要解释一下进一步的问题:背景图像应该是一个星域,它应该被画了游戏主面板。但是,结果每次都是黑色背景(如背景色中设置的那样)。图像大小与帧大小相同。所有其他图像都在游戏开始后正确绘制,唯一的问题是背景图片。删除大部分描绘其他图像的代码后,背景图像仍然无法加载。

+4

考虑提供一个[可运行示例](https://stackoverflow.com/help/mcve)这表明您的问题。这将导致更少的混淆和更好的回应 – MadProgrammer 2014-12-05 11:00:42

+0

MadProgrammer:我可以发布的唯一例子是我的问题是窗口的屏幕截图。这会更有帮助吗? – 2014-12-05 11:09:15

+0

mKorbel:失踪的paintIcon在哪里? – 2014-12-05 11:09:52

回答

1

现在paintIcon有x,y参数不是宽度/高度,这似乎是错误。

一般我有些不喜欢的paintIcon方法,和将存储该图像和做:

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(backgroundImg.getImage(), 0, 0, null); 
}