为什么ImageIcon不起作用?

时间:2012-07-07 18:04:03

标签: java swing jframe imageicon jmenuitem

将ImageIcon添加到JMenuItem时出现问题。我添加它就像它在教程中编写但它没有用。我已经检查过谷歌有什么不对,但没找到。 这是代码:

File.add(new JMenuItem("New", new ImageIcon("images/new.gif")));

我认为问题可能是图标与.class或.java文件不在同一个文件夹中,所以我已经替换它了 - 但仍然无效。 菜单只显示文字.. 我该怎么办才能让我工作?

1 个答案:

答案 0 :(得分:4)

您正在传递相对文件名作为参数。此文件名与类无关。它与JVM的当前目录相关。以及当前目录(如果启动java的目录)。因此,如果您从c:\foo启动该程序,它将查找文件c:\foo\images\new.gif,即使这些类位于jar文件d:\Java\myApp.jar或目录e:\projects\myApp\classes中。 / p>

用作ImageIcon的文件通常捆绑在应用程序的jar文件中,同时包含类文件,并由类加载器加载。如果将文件存储在包com.foo.bar下,则应使用

new ImageIcon(MyClass.class.getResource("/com/foo/bar/new.gif"));