2011-06-16 32 views
15

虽然this answer正在从Jar文件加载图像ImageIcons,但我似乎无法为Swing HTML中引用的图像获取正确的路径。从罐子中为Swing加载图像HTML

这时的资源没有被绑定到一个罐子显示在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>")); 

里面的罐子中,图像可以被成功引用的(和显示)转换成ImageIcon

Icon topIcon = new ImageIcon(getClass().getResource("icons/folder_link.png")); 

但是,我尝试使用Swing HTML的getResource技术不起作用。

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>")); 

什么是秘密?

回答

13

而无需实际试了一下,我将认为HTML渲染器可以访问你的形象,如果你在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>")); 
+0

的toString ......当然。比getPath()更清晰 – jedierikb 2011-06-16 15:07:56

+0

另外,_不要忘记把url包装在撇号中(像我一样)。奇怪的是,没有撇号它在eclipse中工作,但没有捆绑在一个罐子里。 – 2017-09-26 09:38:14

9

网址是秘密

尝试这个队友:

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的图标,如果您想这样做!

+0

您的答案将URL对象转换为toString()。 – jedierikb 2011-06-16 18:26:00

0

由于连original demo来自Sun用于在Swing使用HTML没有嵌入在HTML中的图像(用于产生按钮图像图标),我怀疑有即使对于在适当位置显示图像支持。我记得在某处读者“有限的HTML子集”,但现在找不到参考。

编辑:请参阅安德鲁的评论和回答,它确实有效。

+0

“我怀疑甚至有支持显示图像的地方。”虽然'JEditorPane'只会用简单的CSS显示一个有限的HTML子集 - 但你在这里跟踪的方式不正确。看我的例子。 – 2011-06-17 01:50:05

+0

@Andrew感谢您的信息,+1。 – Waldheinz 2011-06-17 07:33:27