java - 为什么 ImageIcon 不起作用?

标签 java swing jframe imageicon jmenuitem

我在将 ImageIcon 添加到 JMenuItem 时遇到问题。我按照教程中写的那样添加了它,但没有用。我用谷歌查了一下有什么问题,但没有找到。 这是代码:

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

我认为问题可能是图标与 .class 或 .java 文件不在同一文件夹中,因此我已替换它 - 但仍然无法正常工作。 菜单只显示文字.. 我应该做什么才能让我工作?

最佳答案

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

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

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

关于java - 为什么 ImageIcon 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11377419/

相关文章:

java - Thread.sleep() 停止我的绘画?

java - 使用java在一个连接中进行多个sql查询

Java GUI,多框架

Java:使用 DRBG SecureRandom 时如何设置随机数?

java - 如何使用 JasperReports 自动生成报告

java - 单击按钮时更改 JEditorPane 内的 html 页面

java - JMenuBar 重新绘制我的 JPanel

java - 使用 pack() 将 JFrame 缩放到适当大小时出现问题

Java - PDF 生成框架

java - Maven阴影插件: Cannot create instance of