2010-11-10 8 views
0

Je tente d'afficher html dans un JEditorPane. Initialement, le type est défini sur "text/html". Quand j'utilise setPage (URL) ça marche très bien et la sortie qui en résulte est affichée mais si j'ai une chaîne qui contient du code HTML et que j'ai utilisé setText (String) pour afficher le résultat sur JEditorPane rien n'est affiché Je vois seulement espace blanc. Bien sûr, si j'ai copié le contenu de la chaîne collée dans le notpad, enregistré en tant que. Html puis ouvert le fichier résultant dans le navigateur, il s'affiche correctement. Le vrai problème est de savoir comment ou quoi JEditorPane fait avec la chaîne pour afficher ce qui s'y trouve. Le JEditorPane est à l'intérieur d'un JscrollPane qui se trouve dans une Jframe. et je n'ai utilisé que les méthodes setContentType ("text/html") et setText (String) pour l'affichage html.Problème avec l'affichage HTML dans JEditorPane java

Y a-t-il moyen de contourner cela plutôt que d'écrire le code html résultant dans un fichier et d'utiliser SetPage (URL)? Je peux poster le code html si vous en avez besoin (mais c'est assez grand). Merci de votre aide.

+0

fonctionne bien pour moi. Publiez votre SSCCE (http://sscce.org) démontrant le problème. – camickr

Répondre

0

Je ne sais pas pourquoi setText ne fonctionne pas. Mais voici une solution de contournement.

Essayez cette URL. (Le fichier entier dans l'URL) (C'est ce que WebView Android appelle lorsque vous setText en elle)

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 

Il commence par data:text/html;charset=utf-8, et est suivi par votre code HTML.

Cependant vous devez l'encoder .. Au moins, vous devez remplacer% avec% 25 Le reste pourrait bien fonctionner sans codage.

Vous pouvez également utiliser ce code pour intégrer des images sans appeler un fichier

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

Il vous suffit de base64 encoder votre image et vous pouvez le coller juste.