Загрузка изображений из банок для 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>") );
В чем секрет?
Ответы
Ответ 1
Не попробовав, я бы предположил, что средство визуализации 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>") );
Ответ 2
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, если вы хотите это сделать.
Ответ 3
Ответ расширен и перемещен на Возможно ли/встраивание и доступ к файлам HTML в JAR?
Ответ 4
Потому что даже оригинальная демонстрация от Sun для использования HTML в Swing не встраивает изображения в HTML (для создания кнопок со значками изображений) Я сомневаюсь, что есть даже поддержка отображения изображений на месте. Я помню читатель "ограниченный подмножество HTML" где-то, но не могу найти ссылку прямо сейчас.
Изменить: см. комментарий и ответ Andrew, он действительно работает.