从罐子里为Swing HTML加载图片

jed*_*ikb 16 html java swing image

虽然这个答案适用于从Jar文件加载图像ImageIcons,但我似乎无法为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>") );
Run Code Online (Sandbox Code Playgroud)

在jar内部,可以成功地将图像引用(并显示)为ImageIcon:

Icon topIcon = new ImageIcon( getClass().getResource("icons/folder_link.png" ) );
Run Code Online (Sandbox Code Playgroud)

但是,我尝试将此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>") );
Run Code Online (Sandbox Code Playgroud)

秘密是什么?

jar*_*bjo 15

在没有实际尝试的情况下,如果您在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>") );
Run Code Online (Sandbox Code Playgroud)


got*_*ers 9

URL是秘密

试试这个伴侣:

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>") );
Run Code Online (Sandbox Code Playgroud)

然后你也可以这样做:

Icon topIcon = new ImageIcon(p);
Run Code Online (Sandbox Code Playgroud)

然后将此图标设置为JLabel的图标,如果您想这样做的话!