Загрузка изображений из банок для Swing HTML

Хотя этот ответ работает для загрузки изображений из файлов Jar для ImageIconsЯ не могу найти правильный путь для изображений, на которые ссылается 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" ) );

Тем не менее, моя попытка использовать 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>") );

В чем секрет?

4 ответа

Решение

На самом деле, не попробовав его, я бы предположил, что средство визуализации 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 это секрет

Попробуйте это, приятель:

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, если вы хотите это сделать!

Поскольку даже оригинальная демоверсия от Sun для использования HTML в Swing не встраивает изображения в HTML (для создания кнопок с иконками изображений), я сомневаюсь, что есть даже поддержка отображения изображений на месте. Я помню читателя "ограниченное подмножество HTML" где-то, но не могу найти ссылку прямо сейчас.

Редактировать: Пожалуйста, смотрите комментарий и ответ Эндрю, это действительно работает.

Другие вопросы по тегам