2011-06-16 13 views
15

Mientras this answer trabaja para cargar imágenes desde archivos Jar para ImageIcons, parece que no puedo encontrar la ruta correcta para las imágenes a las que se hace referencia en Swing HTML.Cargando imágenes desde jar para Swing HTML

Esto muestra una imagen en el HTML oscilación cuando los recursos no están agrupados en un frasco:

new JLabel("<html><table cellpadding=0><tr><td><img src='file:icons/folder_link.png'></td></tr><tr><td>100</td></tr></table></html>")); 

En el interior de la jarra, la imagen puede hacer referencia con éxito (y se muestra) en un ImageIcon:

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

sin embargo, mi intento de utilizar la técnica getResource para HTML oscilación no funciona.

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

¿Cuál es el secreto?

Respuesta

13

sin tener intentó, yo supongo que el procesador de HTML puede acceder a su imagen si se incluye la URL del recurso en su código 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 ... por supuesto. mucho más claro que getPath() – jedierikb

+0

Además, _no te olvides de envolver la url en apostrophes_ (como yo). Curiosamente, sin apóstrofes funcionaba en eclipse, pero no cuando estaba empaquetado en un frasco. –

9

URL es el secreto

Try este compañero:

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

A continuación, también podría hacer esto:

Icon topIcon = new ImageIcon(p); 

a continuación, establezca este icono como el icono de la JLabel si quieres hacer eso!

+0

Su respuesta convierte el objeto URL a String(). – jedierikb

0

porque incluso el original demo de Sun para el uso de HTML en oscilación no incrustar las imágenes en HTML (para generar botones con iconos de imagen), no creo que hay incluso el apoyo para la visualización de imágenes en su lugar. Recuerdo el lector "subconjunto limitado de HTML" en algún lugar, pero no puedo encontrar una referencia en este momento.

Editar: favor ver comentario y la respuesta de Andrew, realmente funciona.

+0

"Dudo que haya siquiera soporte para mostrar imágenes en su lugar". Si bien el 'JEditorPane' solo mostrará un subconjunto limitado de HTML con CSS simple, usted está muy alejado de la ruta allí. Ver mi ejemplo. –

+0

@Andrew Gracias por la información, +1. – Waldheinz

Cuestiones relacionadas