[Java] HTMLDocument modifié, mais balises affichées [résolu]

HTMLDocument modifié, mais balises affichées [résolu] [Java] - Java - Programmation

Marsh Posté le 29-08-2003 à 15:14:26    

Bonjour,
 
J'ai créé un objet de type HTMLDocument qui est partagé entre divers autres objets. Lorsque je le modifie, il n'est pas réanalysé par son JEditorPane et est donc affiché tel quel, avec toutes les balises HTML.
Comment régler mon problème ?
 

Code :
  1. HTMLDocument htmlDocument = new HTMLDocument();
  2.    
  3.     ...
  4.     JEditorPane pane = new JEditorPane();
  5.    
  6.     pane.setContentType("text/html" );
  7.     pane.setDocument(htmlDocument);
  8.     pane.setEditable(false);
  9.     ...


Mise à jour du document :

Code :
  1. htmlDocument.remove(0, htmlDocument.getLength());
  2.     htmlDocument.insertString(0, newHtmlContent, null);


Message édité par Krueger le 01-09-2003 à 10:43:53

---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 29-08-2003 à 15:14:26   

Reply

Marsh Posté le 29-08-2003 à 15:57:32    

tu dois refaire setDocument non?
 
sinon regarde le source de cette methode, d'apres la doc, elle trigger un event pour refresher l'affichage...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-08-2003 à 17:18:09    

C'est pas très propre, mais ça ne marche pas non plus. Je vais tenter de spécifier un HTMLEditorKit pour voir ce que ça donne...


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 29-08-2003 à 17:29:05    

Ça n'affiche plus rien ! :cry:
 

Code :
  1. HTMLEditorKit editorKit = new HTMLEditorKit();
  2.     Document htmlDocument = editorKit.createDefaultDocument();
  3.     JEditorPane pane = new JEditorPane();
  4.    
  5.     pane.setContentType("text/html" );
  6.     pane.setDocument(htmlDocument);
  7.     pane.setEditable(false);
  8.     pane.setEditorKit(editorKit);



---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 29-08-2003 à 18:28:05    

essaye ca :
 

Code :
  1. insertHTML(text, doc.getLength());
  2. private void insertHTML(String html, int location) throws IOException {
  3.         try {
  4.             HTMLEditorKit kit = (HTMLEditorKit) this.getEditorKit();
  5.             StringReader reader = new StringReader(html);
  6.             kit.read(reader, doc, location);
  7.         } catch (BadLocationException e) {
  8.             logger.error("Failed to insert HTML", e);
  9.         }
  10.     }



Message édité par veryfree le 29-08-2003 à 18:29:14
Reply

Marsh Posté le 01-09-2003 à 09:44:43    

Toujours pas mis en forme ; les balises restent affichées. :sweat:
Ce que j'essaie de faire actuellement est de remplacer tout le contenu HTML, dans le cas où.


Message édité par Krueger le 01-09-2003 à 09:45:58

---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 01-09-2003 à 10:43:53    

C'est bon ça marche. J'avais viré le setEditorKit() sans savoir pourquoi. :heink:
 

Code :
  1. HTMLEditorKit editorKit = new HTMLEditorKit();
  2.     Document htmlDocument = editorKit.createDefaultDocument();
  3.     // Avec 'new HTMLDocument()' ça marche aussi.
  4.     JEditorPane pane = new JEditorPane();
  5.    
  6.     pane.setDocument(htmlDocument);
  7.     pane.setEditable(false);
  8.     pane.setEditorKit(editorKit);


... et en "readant" la chaîne HTML comme me l'a proposé veryfree, ça marche. [:youpi]


Message édité par Krueger le 01-09-2003 à 13:51:18

---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 01-09-2003 à 11:39:45    

Un problème qui m'est apparu : Un méchant CharsetchangedException dû au fait que ma page HTML possédait une balise META indiquant son Content-Type. Pour éviter ça, une solution est d'ajouter la propriété IgnoreCharsetDirective au document :

Code :
  1. document.putProperty("IgnoreCharsetDirective", Boolean.TRUE);


 
Autre remarque, il faut spécifier le document après le kit d'édition, sinon la page peut ne pas être mise à jour correctement.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 01-09-2003 à 13:15:46    

Krueger a écrit :

C'est bon ça marche. J'avais viré le setEditorKit() sans savoir pourquoi. :heink:
 

Code :
  1. HTMLEditorKit editorKit = new HTMLEditorKit();
  2.     Document htmlDocument = editorKit.createDefaultDocument();
  3.     // Avec 'new HTMLDocument()' ça marche aussi.
  4.     JEditorPane pane = new JEditorPane();
  5.    
  6.     pane.setDocument(htmlDocument);
  7.     pane.setEditable(false);
  8.     pane.setEditorKit(editorKit);


... et en "readant" la chaîne HTML comme me l'a proposé antp, ça marche. [:youpi]


 
ANTP  :heink:

Reply

Marsh Posté le 01-09-2003 à 13:51:18    

Oups, désolé. :lol: :lol: :lol:
Illico corrigé. :whistle:
 
Je n'ai rien en tête pour vous différencier, alors il y a eu une permutation involontaire. :o


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 01-09-2003 à 13:51:18   

Reply

Marsh Posté le 01-09-2003 à 13:59:38    

Krueger a écrit :

Oups, désolé. :lol: :lol: :lol:
Illico corrigé. :whistle:
 
Je n'ai rien en tête pour vous différencier, alors il y a eu une permutation involontaire. :o


 
yes :sol:
 
je crois que j'ai droit a un bon point la  :whistle:

Reply

Marsh Posté le 01-09-2003 à 16:50:42    

Bon, si tu y tiens...


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 01-09-2003 à 23:44:31    

Krueger a écrit :

Bon, si tu y tiens...


 
oui j y tiens :o

Reply

Marsh Posté le 01-09-2003 à 23:47:46    

ça vaut vraiment un point pour veryfree ça? [:meganne]
je demande l'avis des jurés :o
 
(je trouve la solution un peu porc; on est vraiment obligé de relire tout l'html? :/)


Message édité par the real moins moins le 01-09-2003 à 23:48:19

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 01-09-2003 à 23:58:24    

the real moins moins a écrit :

ça vaut vraiment un point pour veryfree ça? [:meganne]
je demande l'avis des jurés :o
 
(je trouve la solution un peu porc; on est vraiment obligé de relire tout l'html? :/)


 
 
c pas ce que fait ma methode [:toad666]

Reply

Marsh Posté le 02-09-2003 à 00:03:13    

veryfree a écrit :


 
 
c pas ce que fait ma methode [:toad666]

ha bon :??:
 
ça manque de javadoc alors :o
 
(tu veux un mauvais point? :heink:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2003 à 00:21:05    

the real moins moins a écrit :

ha bon :??:
 
ça manque de javadoc alors :o
 
(tu veux un mauvais point? :heink:)


 
laisse tomber  :pfff:

Reply

Marsh Posté le 02-09-2003 à 00:39:53    

veryfree a écrit :


 
laisse tomber  :pfff:  

roh l'aut' !
serieux explique ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2003 à 00:41:47    

the real moins moins a écrit :

roh l'aut' !
serieux explique ;)


 
sur icq :o

Reply

Marsh Posté le 02-09-2003 à 20:35:26    

Bon, allez vous battre sur ICQ alors. Ça me permettrait ainsi d'économiser un point. :whistle:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed