从 jar 中加载图像以用于 Swing HTML
Posted
技术标签:
【中文标题】从 jar 中加载图像以用于 Swing HTML【英文标题】:Loading images from jars for Swing HTML 【发布时间】:2011-09-16 10:44:35 【问题描述】:虽然this answer 可以为ImageIcons
从Jar 文件加载图像,但我似乎无法为Swing html 中引用的图像找到正确的路径。
当资源未捆绑到 jar 中时,这会在 Swing HTML 中显示图像:
new JLabel("<html><table cellpadding=0><tr><td><img src='file:icons/folder_link.png'></td></tr><tr><td>100</td></tr></table></html>") );
在 jar 内部,图片可以成功引用(并显示)到ImageIcon
:
Icon topIcon = new ImageIcon( getClass().getResource("icons/folder_link.png" ) );
但是,我尝试将 getResource
技术用于 Swing HTML 并不起作用。
String p = getClass().getResource("icons/folder_link.png" ).getPath();
new JLabel("<html><table cellpadding=0><tr><td><img src='" + p + "'></td></tr><tr><td>100</td></tr></table></html>") );
秘诀是什么?
【问题讨论】:
【参考方案1】:如果没有实际尝试过,我会假设如果您在 HTML 代码中包含资源 URL,HTML 渲染器可以访问您的图像:
String p = getClass().getResource("icons/folder_link.png" ).toString();
new JLabel("<html><table cellpadding=0><tr><td><img src='" + p + "'></td></tr><tr><td>100</td></tr></table></html>") );
【讨论】:
另外,不要忘记将 url 括在撇号中(像我一样)。奇怪的是,没有撇号,它在 Eclipse 中有效,但在捆绑在 jar 中时无效。【参考方案2】:网址是秘密
试试这个伙伴:
URL p = getClass().getResource("icons/folder_link.png" );
new JLabel("<html><table cellpadding=0><tr><td><img src='" + p + "'></td></tr><tr><td>100</td></tr></table></html>") );
那么你也可以这样做:
Icon topIcon = new ImageIcon(p);
然后将此图标设置为您的 JLabel 的图标,如果您想这样做!
【讨论】:
您的答案将 URL 对象转换为字符串()。【参考方案3】:因为即使是来自 Sun 的在 Swing 中使用 HTML 的 original demo 也没有在 HTML 中嵌入图像(用于生成带有 图像图标的按钮),我怀疑是否支持在地方。我记得某处有读者“有限的 HTML 子集”,但现在找不到参考。
编辑:请查看 Andrew 的评论和回答,它确实有效。
【讨论】:
“我怀疑是否支持在适当位置显示图像。”虽然JEditorPane
只会显示有限的 HTML 子集和简单的 CSS——但你离那里很远。看我的例子。【参考方案4】:
答案扩展并移至Is it possible/how to embed and access HTML Files in a JAR?
【讨论】:
以上是关于从 jar 中加载图像以用于 Swing HTML的主要内容,如果未能解决你的问题,请参考以下文章
如何从资源位图文件中加载图像数据以进行 directshow 过滤器?