Bonjour, j'arrive à insérer des tags HTML dans un JTextPane comme ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| HTMLDocument doc = ( HTMLDocument )zoneTexte.getDocument( );
int min = zoneTexte.getSelectionStart( );
javax.swing.text.Element elem = doc.getCharacterElement( min );
String text = zoneTexte.getSelectedText( );
javax.swing.text.SimpleAttributeSet newAttr = new javax.swing.text.SimpleAttributeSet();
javax.swing.text.AttributeSet a = elem.getAttributes();
newAttr.addAttributes(a);
if( a.getAttribute( tag ) == null ){
newAttr.addAttribute( tag, "" );
}
else{
newAttr.removeAttribute( tag );
}
try{
// Supprime la sélection
doc.remove( min, text.length( ) );
// Rajoute la sélection + tag
doc.insertString( min, text, newAttr );
}catch ( BadLocationException exception ) { exception.printStackTrace( ); } |
zoneTexte étant mon JTextPane et tag étant un tag HTML (HTML.Tag.B ...)
Ca marche bien pour 80% des cas. A partir du moment ou le tag n'a pas d'attributs. (<b></b>, <i></i>, ...)
Pour les autres (exemple : <div align="center"> </div>) je ne sais pas comment il faut faire.
La méthode newAttr.addAttribute( tag, "" ); a comme deuxième paramètre "Object value", j'imagine donc que c'est un élément de réponse.
J'ai essayé de faire newAttr.addAttribute( tag, "align=center" ); mais ça ne fait rien du tout.
J'ai regardé du coté de la classe HTML, il y a une sous-classe HTML.Attribute mais il n'y a que des "accesseur"(get) dedans.
Comment faire pour insérer des tags "complexe" ?
Merci d'avance !
Je pense qu'il faut que je passe par une variable de type HTML et que je fasse :
newAttr.addAttribute( html, "center" );
mais je ne sais pas construire une variable de type HTML...
Partager