Quel composant choisir ? Vous avez le choix entre JTextPane et JEditorPane. En effet, ce sont les seuls à utiliser comme "Model" (Cf Model-View-Controller Architecture) un composant dérivant de AbstractDocument et implémentant l'interface StyledDocument.
Mise en page à la création : Si la mise en page est fixée lors de la création du document, il suffit de récupérer le Model du composant texte.
JTextPane monComposantTexte = new JTextPane ();
DefaultStyledDocument doc = (DefaultStyledDocument) monComposantTexte.getDocument ();
doc.insertString (offset, "texte à ajouter", /** [un style d'écriture] */);
Style déterminé a l'insertion : Si le style est connu lors de l'insertion, il faut créer une classe qui hérite de DefaultStyledDecument et redéfinir la méthode insertString(). Exemple pour écrire tout le texte avec le style nomme styleNormal sauf si l'on insert le mot 'HELP' :
/** Redéfini pour choisir l'effet de style à utiliser */
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
try {
/** si le texte inséré est égal à HELP le texte s'écrit
* avec le style "styleOp"
*/
if ( str.equals ("HELP") ) {
super.insertString (offs, str, getStyle ("styleOp"));
} else {
/** Sinon le texte est écrit avec le style "styleNormal" */
super.insertString (offs, str, getStyle ("styleNormal"));
}
} catch (BadLocationException e) {
System.out.println ("Tuuuttt erreur Insere");
}
}
(Voir l'exemple fourni.)
Modifier le Style après l'insertion : Pour cela il faut soit récupérer le Model du composant Texte, soit créer sa propre classe dérivant de DefaultStyledDocument.
JTextPane monComposantTexte = new JTextPane ();
DefaultStyledDocument doc = (DefaultStyledDocument) monComposantTexte.getDocument ();
doc.setCharacterAttributes (positionDeDepart, longueur, style, true);
Voir l'exemple fourni.)
|