1

我正在尝试加载图像并设置为背景,但在 selectionPanel 方法中出现错误“无法加载背景图像”。

图像处理似乎出了点问题,但我不知道是什么。

public class selectionPanel extends JPanel
{
  //Variable with the name of our pic
  private static final String path = "selbkgrnd.jpg";
  private ImageIcon imageIcon;
  private Dimension windowSize;
  private int imageHeight;
  private int imageWidth;

  protected selectionPanel()
  {

    this.imageIcon = new ImageIcon("selbkgrnd.jpg"); //Save image to imageIcon
    Image image = this.imageIcon.getImage();
    this.imageWidth = image.getWidth(null);
    this.imageHeight = image.getHeight(null);
    if ((this.imageWidth == -1) || (this.imageHeight == -1)) //Check if background image is succesfully loaded
    {
      JOptionPane.showMessageDialog(JOptionPane.getDesktopPaneForComponent(this), "Could not load background image", "Fatal error!", 0);

      System.exit(-1);
    }
    this.windowSize = new Dimension(this.imageWidth, this.imageHeight);
  }

  protected void startScreen()
  {
    setOpaque(false);
    setSize(this.windowSize);
  }

  protected int getImageHeight()
  {
    return imageHeight;
  }

  protected int getImageWidth()
  {
    return imageWidth;
  }

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

1 回答 1

0

通常这是由于您在错误的位置查找图像文件。尝试使用图像的完整路径,或者是相对于用户目录的路径,可以通过以下方式找到:

System.out.println("user directory: " + System.getProperty("user.dir"));

编辑
你状态:

谢谢它使用完整路径,但是如果它在源代码文件夹中,它不应该只使用图像名称吗?

不,Java 将再次查找与用户目录相关的文件。

但是请注意,如果图像位于类文件目录或与此相关的目录中,并且您从中制作了一个 jar 文件并需要访问图像,那么您将无法使用文件。您需要将图像作为资源获取,并且相对路径会有所不同,因为它与 user.dir 无关,而是与类文件的位置相关。

于 2013-04-06T16:04:10.350 回答