我想分配一个图像作为背景与摆动。我找到了多种方法来做到这一点,但我似乎总是遇到同样的问题。我找到了一个不错的自定义类在这里使用>http://www.camick.com/java/source/BackgroundPanel.java将文件分配给图像编译错误:javax.imageio.IIOException
这里是我使用的代码...
编辑代码:新增构造
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();
}
}
这里是什么形象看起来像......
当我尝试运行这段代码,我GE编译错误Error:(14, 51) java: incompatible types: java.io.File cannot be converted to java.lang.String
。如果有人能想出如何帮助我做到这一点,将不胜感激。
错误i自我解释,文件无法找到。问题是,文件存储在与项目和类文件的关系中,从何处执行代码,与文件存储位置的关系 – MadProgrammer
在同一个项目中,这是我正在使用的代码行使图像显示一个标签(相同的位置),它的工作原理是''charImgLabel.setIcon(new ImageIcon(new javax.swing.ImageIcon(getClass()。getResource(image))。getImage()。getScaledInstance(100 ,100,“../ images/Character.png”.SCALE_SMOOTH)));' –
Then'img = ImageIO.read(f);'should read'img = ImageIO.read(getClass()。getResource(image) );' - 我也想指出刚刚发布的代码不会编译为'Image#getScaledImage'的'hint'属性是一个'int'而不是'String' ...所以,我不知道 – MadProgrammer