将文件分配给映像编译错误:javax.imageio.IIOException

时间:2017-04-20 22:19:08

标签: java swing

我尝试将图像指定为带有挥杆的背景。我已经找到了多种方法来做到这一点,但我似乎总是遇到同样的问题。我在这里找到了一个很好的自定义类> http://www.camick.com/java/source/BackgroundPanel.java

以下是我使用的代码......

编辑代码:添加了构造函数

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class TestMain {
    TestMain(){
        JFrame frame = new JFrame("Test");
        Image img = null;
        File f = new File("../images/Background.png");
        img = ImageIO.read(getClass().getResource(f));
        System.out.println("File " + f.toString());


        BackgroundPanel background = new BackgroundPanel(img, BackgroundPanel.SCALED, 0.50f, 0.5f);

        frame.setContentPane(background);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200, 100);
        frame.setVisible(true);
    }

    public static void main(String[] args) throws IOException{
        new TestMain();
    }
}

以下是图片的样子......

enter image description here

当我尝试运行此代码时,出现编译错误Error:(14, 51) java: incompatible types: java.io.File cannot be converted to java.lang.String。如果有人能弄明白如何帮助我做到这一点,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

在同一个项目中,这是我用于使图像显示标签(相同位置)的代码行,并且它的工作原理> charImgLabel.setIcon(new ImageIcon(new javax.swing.ImageIcon(getClass().getResource(image)).getImag‌​e().getScaledInstanc‌​e(100, 100, "../images/Character.png".SCALE_SMOOTH)));

好的,让我们看一下那里明显的编译错误。

我假设image是对当前类加载器上下文中图像路径的String引用,这意味着

img = ImageIO.read(f);

实际应该是

img = ImageIO.read(getClass().getResource(image));

假设图像存储在类加载器上下文(即Jar /类路径)中,并且您指定的路径是正确的,那么这应该加载您的图像