【发布时间】:2011-12-28 04:51:18
【问题描述】:
我正在尝试添加一个带有图片的 JPanel。我正在使用 ImageIO.read 来获取路径,但我得到一个 IOException 说:无法读取输入文件
图片名为TCHLogo。这是我项目中“res”文件夹中的 PNG。
如果有更好的方式来展示这张图片,也请提出来!
这是我的 JPanel 的代码:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class ImagePanel extends JPanel{
private BufferedImage image;
public ImagePanel() {
try {
//THIS LINE BELLOW WAS ADDED
image = ImageIO.read(getClass().getResourceAsStream("res/TCHLogo.png"));
} catch (IOException ex) {
// handle exception...
System.out.println(ex);
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); //THIS LINE WAS ADDED
g.drawImage(image, 0, 0, null); // see javadoc for more info on the parameters
}
}
这是我在 Applet 中添加 JPanel 的方法:
ImagePanel appletRunningPanel;
appletRunningPanel = new ImagePanel();
appletRunningPanel.setSize(300, 300);
appletRunningPanel.validate();
add(appletRunningPanel);
编辑 我在应用程序当前开始查找的 bin 内创建了一个文件夹。 文件夹叫 res 里面有图片..
现在我在运行该行时得到以下 IOException:
image = ImageIO.read(getClass().getResourceAsStream("res/TCHLogo.png"));
这是错误日志:
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1338)
at surprice.applet.ImagePanel.<init>(ImagePanel.java:17)
at surprice.applet.MainClass.init(MainClass.java:41)
at sun.applet.AppletPanel.run(AppletPanel.java:436)
at java.lang.Thread.run(Thread.java:679)
【问题讨论】:
标签: java swing io jpanel paintcomponent