2009-10-13 3 views
0

Я пытаюсь отобразить локальное изображение в пакете1/package2/myImage.gif в JTextPane. Я первый попытался загрузить ресурс в BufferedImage:Показать локальное изображение (BufferedImage?) Внутри JTextPane

BufferedImage image = ImageIO.read(ClassLoader.getSystemResourceAsStream(
    "package1/package2/myImage.gif")); 

Но тогда я не знал, как использовать это в методе SetText, поэтому я попытался просто указывая на изображение в IMG-теге вместо:

textpane.setText("Some text <img src=\"package1/package2/myImage.gif\" />," + 
    " and some more text"); 

Этот diplay сломанное изображение при запуске. Я уверен, что путь правильный, так как загрузка его в BufferedImage работает.

Как я могу использовать локальные ресурсы, такие как изображение, вместе с другим текстом в JTextPane с поддержкой HTML?

ответ

1

Изображение находится внутри jour application jar. Поэтому вам нужно извлечь их в файл temp.

public String getImagePath(BufferedImage bi) { 
    try { 
     File temp = File.createTempFile("image", ".png"); 
     ImageIO.write(bi, "PNG", new FileOutputStream(temp)); 
     return temp.getAbsolutePath(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
    return null; 
} 

Таким образом, вы можете использовать:

textPane.setText("<html>Some text <img src=\"" + getImagePath(yourLoadedImage) + "\">Some other text"); 
0
textpane.insertIcon(new ImageIcon(image)); 
Смежные вопросы