我尝试将图像指定为带有挥杆的背景。我已经找到了多种方法来做到这一点,但我似乎总是遇到同样的问题。我在这里找到了一个很好的自定义类> 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();
}
}
以下是图片的样子......
当我尝试运行此代码时,出现编译错误Error:(14, 51) java: incompatible types: java.io.File cannot be converted to java.lang.String
。如果有人能弄明白如何帮助我做到这一点,我们将不胜感激。
答案 0 :(得分:1)
在同一个项目中,这是我用于使图像显示标签(相同位置)的代码行,并且它的工作原理>
charImgLabel.setIcon(new ImageIcon(new javax.swing.ImageIcon(getClass().getResource(image)).getImage().getScaledInstance(100, 100, "../images/Character.png".SCALE_SMOOTH)));
好的,让我们看一下那里明显的编译错误。
我假设image
是对当前类加载器上下文中图像路径的String
引用,这意味着
img = ImageIO.read(f);
实际应该是
img = ImageIO.read(getClass().getResource(image));
假设图像存储在类加载器上下文(即Jar /类路径)中,并且您指定的路径是正确的,那么这应该加载您的图像