是否可以获取创建ImageIcon的文件的位置?
内部ImageIcon有一个位置的临时私有URL,在调试时会显示其路径,但我无法弄清楚如何访问它。有什么建议吗?
这就是我的意思,
public String getPath(ImageIcon icon){
return ????;
}
答案 0 :(得分:4)
您可以使用反射来访问私有字段,但如果ImageIcon
未使用URL
创建,则该字段将为null
。如果您自己创建ImageIcon
,则可以在地图中跟踪URL
。
ImageIcon icon = ...
Class<? extends ImageIcon> clazz = icon.getClass();
Field urlField = clazz.getDeclaredField("location");
urlField.setAccessible(true);
URL location = (URL) urlField.get(icon);
还值得考虑的是,字段名称可能会在将来的版本中发生变化,这可能会产生异常。
答案 1 :(得分:2)
您是否尝试过getDescription()
?
我之所以这么说,是因为在public ImageIcon(String filename)
的文档中,它会在“另请参阅”下列出getDescription()
。
注意:请参阅Jeffrey的评论。