Проблема с отображением HTML в JEditorPane Java - PullRequest
0 голосов
/ 10 ноября 2010

Я пытаюсь отобразить HTML в JEditorPane. Первоначально тип установлен в «text / html».

Когда я использую setPage (URL), он работает нормально, и выводится результат, но если у меня есть строка, содержащая HTML-код, и я использовал setText (String), чтобы отобразить результат на панели JEditorPane, ничего не отображается, я вижу только белый пространство.

Конечно, если я скопировал текст в строку, вставил его в notpad, сохранил его как .html, а затем открыл получившийся файл в браузере, который он отображал правильно. Реальная проблема заключается в том, как или что JEditorPane делает со строковым переупорядочением для отображения того, что внутри него. JEditorPane находится внутри JscrollPane, которая находится внутри Jframe. и я использовал только методы setContentType ("text / html") и setText (String) для отображения html.

Есть ли способ обойти это, чем записать полученный HTML-код в файл и использовать SetPage (URL)? Я могу опубликовать HTML-код, если вам это нужно (но он довольно большой). Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 10 ноября 2010

Не знаю, почему setText не работает. Но вот обходной путь.

Попробуйте этот URL. (весь файл в URL) (это то, что вызывает WebView Android, когда вы устанавливаете в нем текст)

data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%3E%0D%0A%3Chead%3E%3Ctitle%3EEmbedded%20Window%3C%2Ftitle%3E%3C%2Fhead%3E%0D%0A%3Cbody%3E%3Ch1%3E42%3C%2Fh1%3E%3C%2Fbody%3E%0A%3C%2Fhtml%3E%0A%0D%0A

Он начинается с data:text/html;charset=utf-8, и сопровождается вашим HTML.

Однако вы должны его кодировать. По крайней мере, вам нужно заменить% на% 25. Остальное может работать без кодирования.

Вы также можете использовать этот код для встраивания изображений без вызова файла

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC" />

Вам просто нужно base64 кодировать изображение, а затем вы можете вставить его прямо в.

...