Loading images from jars for Swing HTML
While this answer works to load images from Jar files for ImageIcons
, I cannot seem to get the right path for images referenced in Swing HTML.
This displays an image in the Swing HTML when the resources are not bundled into a jar:
new JLabel("<html><table cellpadding=0><tr><td><img src='file:icons/folder_link.png'></td></tr><tr><td>100</td></tr></table></html>") );
Inside of the jar, the image can be successfully referenced (and displayed) into an ImageIcon
:
Icon topIcon = new ImageIcon( getClass().getResource("icons/folder_link.png" ) );
However, my attempt to use the getResource
technique for Swing HTML doesn't work.
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>") );
What's the secret?
Without actually having tried it, I would assume that the HTML renderer can access your image if you include the resource URL in your HTML code:
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 is the secret
Try this mate:
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>") );
Then you could also do this:
Icon topIcon = new ImageIcon(p);
and then set this icon as the icon for your JLabel if you want to do that!
Answer expanded and moved to Is it possible/how to embed and access HTML Files in a JAR?
Because even the original demo from Sun for using HTML in Swing does not embed the images in HTML (for generating buttons with image icons), I doubt that there is even support for displaying images in place. I remember reader "limited subset of HTML" somewhere, but can't find a reference right now.
Edit: Please see Andrew's comment and answer, it really works.
精彩评论