我一周前开始使用Java,现在我想在窗口中插入一个图像.无论我尝试什么,我都在Eclipse中继续这样做: javax.imageio.IIOException:无法读取输入文件!
package graphics;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import src.Common;
public class Window extends JFrame
{
public class Panel extends JPanel
{
public void paintComponent(Graphics g)
{
Image img;
try
{
img = ImageIO.read(new File("/logo.jpg"));
g.drawImage(img, 0, 0, this);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public Window(String title, int width, int height)
{
this.setTitle(title);
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(new Panel());
this.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
}
我正在尝试做的是桌面程序,我的源代码存储方式如下:training/src/graphics/Window training/src/src/main
我确实把我想要阅读的图像放在每个文件夹中,但仍然遇到问题:/
我做错了什么?
编辑终于解决了,这里的答案
nIcE cOw给了我帮助的链接.所以我确实把我的图像放到了一个文件夹中,并改变了访问它们的方式,如链接中所述.
getClass().getResource("/images/yourImageName.extension");
Run Code Online (Sandbox Code Playgroud)
你尝试过使用new File("logo.jpg");(没有领先/)吗?
你确定,logo.jpg被复制到你的输出?(某些IDE不会将源目录中的每个文件复制到输出(或目标)目录.)
/src
|-> Window.java
|-> Logo.jpg
Run Code Online (Sandbox Code Playgroud)
变
/out
|-> Window.class
Run Code Online (Sandbox Code Playgroud)
(请注意,IDE /编译器不会将图像复制到输出目录,因此编译后的代码无法找到图像 - 尽管您确实指定了正确的路径)
尝试调试您实际尝试访问的文件资源。第一步是获取new File("/logo.jpg").get [Canonical]Path()并将其打印到System.out(或在调试器中观看)。我猜问题是/before logo.jpg,它指向您的根目录(例如 c:),而您的文件不存在,但我不知道您的文件设置的详细信息。
| 归档时间: |
|
| 查看次数: |
72072 次 |
| 最近记录: |