【问题标题】:Retrieve the path of an ImageIcon检索 ImageIcon 的路径
【发布时间】:2011-08-12 19:13:07
【问题描述】:

是否可以获得创建 ImageIcon 的文件的位置?

ImageIcon 内部有一个其位置的临时私有 URL,在调试时会显示其路径,但我不知道如何访问它。有什么建议吗?

这就是我的意思,

public String getPath(ImageIcon icon){
    return ????;
}

【问题讨论】:

  • “有什么建议吗?” 如果你描述你想要达到的目标,而不是你打算用来实现那个目标的策略,你通常会得到更好的答案.目标是什么?
  • @Andrew 从我的图片图标中获取代表底层图片路径的字符串。
  • 建议:展示如何创建 ImageIcon,提供一些上下文。我假设您的意思是在 JPanel 中,但这是一个假设,因为您没有提供足够的细节。
  • @Charles "..展示你如何创建 ImageIcon,提供一些上下文。" +1 不了解更多,就这件事提供最佳建议并不容易.
  • @Andrew 我看不出我还能给你什么帮助。我有一个 ImageIcon,我想知道是否可以从中获得它的路径。混乱在哪里?

标签: java path


【解决方案1】:

您可以使用反射来访问私有字段,但如果ImageIcon 不是使用URL 创建的,则该字段将为null。如果您自己创建ImageIcons,您可以在地图中跟踪URLs。

ImageIcon icon = ...
Class<? extends ImageIcon> clazz = icon.getClass();
Field urlField = clazz.getDeclaredField("location");
urlField.setAccessible(true);

URL location = (URL) urlField.get(icon);

同样值得考虑的是,字段名称在未来的版本中可能会发生变化,这可能会产生异常。

【讨论】:

    【解决方案2】:

    你试过getDescription()吗?

    我之所以这么说,是因为在public ImageIcon(String filename) 的文档中,它在“另见”下列出了getDescription()

    注意:请参阅 Jeffrey 的评论。

    【讨论】:

    • +1,如果他没有在构造函数中单独提供描述或使用setDescription(String)设置它,这将起作用。
    • @Jeffrey 那么你们的意思是,在一般情况下,除了通过反射之外,没有保证方法可以获取 ImageIcons 原始文件路径?
    • @Andrew 是的。自己跟踪是唯一有保证的方法。
    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多