【问题标题】:Icon in JLabel is hiddenJLabel 中的图标被隐藏
【发布时间】:2014-04-29 10:15:02
【问题描述】:

我试图在我的JDialog 中加载一张图片。 所以,我尝试了 JLabel 这样的:

ImageIcon icon = new ImageIcon("/sau/se/editor/images/HighBtomStPic.png");
System.out.println("Icon exists: "+(icon != null));
JLabel lblNewLabel = new JLabel();
lblNewLabel.setIcon(icon);

print 给了我true,我没有看到我插入的图片,那我做错了什么?

【问题讨论】:

  • 文件/sau/se/editor/images/HighBtomStPic.png是否真的存在于您的计算机上。
  • 考虑使用 ImageIO.read over ImageIcon 来加载图像
  • 我改变了它并且它已经工作了,ImageIcon icon = new ImageIcon(GraphEditor.class .getResource("/sau/se/editor/images/HighBtomStPic.png"));
  • 请写下您问题的答案,以便您接受。要么,要么删除问题,尽管我敢打赌 eitanfar 不希望看到这种情况发生。 ;)

标签: java swing icons jlabel embedded-resource


【解决方案1】:

如果没有抛出异常,构造函数总是返回一个实例。这就是为什么 null 检查似乎没问题的原因。

相反,您应该检查一下: icon.getImageLoadStatus() == MediaTracker.COMPLETE

【讨论】:

  • 这意味着它没有被加载。我怀疑它是否返回了 MediaTracker.ABORTED,可能虽然它是 MediaTracker.ERRORED(您可以轻松检查)。如果是这种情况,则加载文件时出现问题。最常见的问题是路径不正确,否则可能是文件已损坏,或者不是图像文件。
  • JLabel 是一个 ImageObserver,它应该允许它响应图标加载状态的变化。作为建议,使用 MediaTracker 进行测试可能是个好主意
  • 检查任何给定时刻的负载状态可能不是真正的值检查,除非尝试循环它。只是说
【解决方案2】:

由于我处理的是源上下文而不是文件系统,

答案应该是: 替换:

ImageIcon icon = new ImageIcon("/sau/se/editor/images/HighBtomStPic.png");

与:

ImageIcon icon = new ImageIcon(GraphEditor.class.getResource("/sau/se/editor/images/HighBtomStPic‌​.png"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2011-08-03
    • 2014-01-08
    • 1970-01-01
    • 2012-02-19
    • 2012-12-03
    相关资源
    最近更新 更多