2010-11-10 4 views
0

Im пытается отобразить html в JEditorPane. Первоначально тип имеет значение «text/html».Проблема с отображением HTML в JEditorPane java

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

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

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

+0

отлично работает для меня. Отправьте свой SSCCE (http://sscce.org), демонстрирующий проблему. – camickr

ответ

0

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

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

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 закодировать изображение, а затем вы можете вставить его прямо.

Смежные вопросы