【问题标题】:Java - ImageIcon won't show imageJava - ImageIcon 不会显示图像
【发布时间】:2010-03-11 02:37:20
【问题描述】:
searchIcon = new ImageIcon( "searchIcon.png" );

searchIconLabel = new JLabel();
searchIconLabel.setIcon(searchIcon);

....

searchHorizontalPanel.add( searchIconLabel );

我正在尝试加载图标,但它不会显示。 jpanel 在 boxlayout 中。我不知道这会不会把事情搞砸。这很奇怪,因为除了图标图像之外,我几乎可以添加任何其他内容。我浏览了调试器,searchIcon 显示宽度和高度为-1。这是否意味着图像没有被加载?

【问题讨论】:

  • 您的大部分问题都包含在 Swing 教程中。为什么你不能在发布问题之前先阅读教程?我只是给了你一个教程的链接,但你还没有阅读它并继续提出后续问题,因为你不明白原来的单行解决方案。
  • camickr,在我遇到堆栈溢出之前,我总是查看 javadocs 和 swing 教程。我以前见过swing tut,它对我没有帮助,主要是因为它的第一种方法对我不起作用,其次我不想使用getResource方法。所以,请停止假设。谢谢。祝你有美好的一天。
  • 我建议您阅读常见问题解答stackoverflow.com/faq

标签: java


【解决方案1】:

您的图像文件需要与您运行应用程序的目录位于同一目录中。

如果它实际上与进行调用的类位于同一目录中,那么您可以使用:

searchIcon = new ImageIcon( getClass().getResource("searchIcon.png") );

如果它位于任意位置,则需要指定完整路径。

【讨论】:

  • 谢谢。我添加了完整路径,它可以工作。不过这很奇怪......在我之前编写的一个 Java 程序中,我只是在项目文件夹中拥有该文件(使用 NetBeans)并且它加载得很好。
  • 然而这带来了一个问题。如果它不在同一台计算机上运行怎么办?路径会有所不同。如何添加适用于所有计算机的路径?
  • -1 如果实际上是在与进行调用的类相同的目录中,那么随问题发布的代码将起作用。这就是为什么更好的答案是实际阅读教程,以便您了解发生了什么并且不要仅仅因为有人发布了一行代码而采取捷径,因为您仍然不明白它为什么起作用。自己做一些基本的阅读。
  • 那不正确,贴出的代码在它运行的目录中查找,与类不在同一个目录
  • @Plissken,最好将您的图像作为资源打包到您的类中。这避免了必须指定完整路径的问题。
【解决方案2】:

我通过调试器并 searchIcon 显示宽度和 高度为-1。这是否意味着 图片没有加载?

是的。

阅读 JLabel API,您会找到一个指向“如何使用标签”的 Swing 教程的链接,该教程有一个工作示例。

您还将找到“如何使用图标”部分,其中显示了正确指定图标位置的所有不同方法。

【讨论】:

    【解决方案3】:

    如果您尚未导入 java.awt.BufferedImage,则计算机将无法允许访问 Java 以加载图像。

    【讨论】:

    猜你喜欢
    • 2011-02-02
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多