Отображение HTML с Java - PullRequest
       47

Отображение HTML с Java

1 голос
/ 03 февраля 2011

Привет!

Я пытался отобразить HTML с Java, используя JEditorPane. Но я столкнулся с проблемой: он не отображает изображения.

У меня есть простая форма JFrame с JButton и JEditorPane. Кнопка имеет этот обработчик кликов:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{
    String s = jEditorPane1.getText();

    if (jEditorPane1.getContentType() == "text/html")
        jEditorPane1.setContentType("text/plain"); else
            jEditorPane1.setContentType("text/html");

    jEditorPane1.setText(s);
}

Это "конвертирует" простой текст в html и обратно при нажатии. И это прекрасно работает для простого HTML. Но когда я пытаюсь показать некоторые изображения (давая изображение находится в каталоге с .jar, я выполняю), я получаю image not found изображение. То же самое происходит, когда я помещаю изображение в свой .jar.

Итак, вопрос в следующем: Как это можно исправить?

И еще один вопрос: могу ли я поместить некоторые HTML-файлы с их каталогами файлов, в том числе внутри моего (или нового) .jar, а затем показать их загружаемыми из этого? Если да, то как это можно сделать?

1 Ответ

1 голос
/ 03 февраля 2011

Относительно вашего первого вопроса: поскольку вы передали текст HTML непосредственно на панель редактора, не прося загрузить его из URL, он не знает, как разрешить относительные URL.

Таким образом, у вас есть два решения:

  1. используйте абсолютные URL для ваших изображений
  2. сообщить JEditorPane базовый URL-адрес, который он должен использовать для загрузки ресурсов.

Для второго решения вам просто нужно получить экземпляр HTMLDocument, используемый на панели редактора, и вызвать метод setBase () .

Что касается вашего второго вопроса, вы, конечно, можете поместить HTML и изображения в файл jar, вызвать Class.getResource (), чтобы получить URL-адрес одного из этих HTML-файлов, и дать URL-адрес панели редактора: он загрузит HTML и отображать изображения относительно URL загруженного HTML-файла.

...