从相对路径获取图像

时间:2009-12-30 04:36:14

标签: java

在我的项目中,我有2个包。 图片 - 包含图片和 通知 - 包含java文件

在notification / main.java中,我使用此代码从image获取Image对象

Image image = Toolkit.getDefaultToolkit().getImage("/images/key-16x16.png");

我无法获得图像。

如何修复此错误。

8 个答案:

答案 0 :(得分:18)

我正在使用Netbeans开发Java桌面应用程序,我已经解决了我的问题。

Image image = new ImageIcon(this.getClass().getResource("/images/bell-icon16.png")).getImage();

“this”是一个 extends JFrame

答案 1 :(得分:7)

/表示绝对路径,保存Java web-apps,其中/表示相对于上下文。所以,我建议使用相对URL,意味着摆脱前面的/,然后提供正确的路径。

如果即使这样你无法解决它,尝试在你正在寻找图像的同一路径上创建一个文件。通过这种方式,您将了解到您的确切位置以及您应该在哪里寻找。

答案 2 :(得分:1)

您也可以尝试

Image image = new ImageIcon(path).getImage();

答案 3 :(得分:1)

我也是这样,事实证明你需要在你的src文件夹中创建一个包。 对于instace,如果你在src文件夹中创建一个名为images的包,那么你的相对路径就是 /images/yourimage.png。

请注意斜杠(/)必须在那里! 更多信息http://forums.macrumors.com/showthread.php?t=533922

它对我有用

答案 4 :(得分:1)

Toolkit tk = Toolkit.getDefaultToolkit();
Class<? extends JFrame> j = YOURJFRAME.getClass();
Image image = tk.createImage(j.getResource("/images/bell-icon16.png"));

尝试使用该代码,如果您有一个可行的JFrame。 如果你有一个Applet,那么只需使用

Toolkit tk = Toolkit.getDefaultToolkit();
Image image = tk.createImage("images/bell-icon16.png");

对于小程序,你永远不想在开头使用/,但是如果你有一个JFrame,并且你使用的是getResource,那么你需要在Path的开头使用/。

答案 5 :(得分:1)

如果上述解决方案不起作用,试试这个(对我有用):

Image image = Toolkit.getDefaultToolkit().createImage(this.getClass().getResource("/Images/bell-icon16.png"));

答案 6 :(得分:0)

SwingResourceManager.getImage(YourClass.class,"key-16x16.png");

getIcon方法会将Icon返回为类似的

答案 7 :(得分:0)

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("../resources/MainIcon.png")));