Originariamente inviato da fermat
ok mi sono fatto un'idea.
però visto che nn posso usare StringBuilder/Buffer posso usare solo String?
Allora chiariamo: il "modello ad oggetti" su cui JEditorPane/JTextPane si basano è fatto di oggetti speciali che sono: un "document" (interfaccia Document, sottotipi e implementazioni varie), gli "element" (interfaccia Element e implementazioni) e gli "attribute" (interfaccia AttributeSet, sottotipi e implementazioni varie).
Se vuoi usare direttamente questi, non ti basta certo un String. Tipicamente si usa la classe SimpleAttributeSet per gestire gli attributi, li devi aggiungere espressamente con dei metodi (in genere quelli di StyleConstants) poi devi aggiungere del testo nel document specificando gli attributi (e per certi metodi da un offset per tot di lunghezza), ecc...
Questo è al livello più basso.

Ma con JEditorPane/JTextPane si possono anche leggere/scrivere documenti in formato HTML e RTF. Per "documento" adesso si intende o un file fisico, un InputStream generico o anche un String. Ma se vuoi lavorare a questo livello devi generare una sequenza di testo con codice HTML o RTF corretto (con tutto quello che comporta: tag corretti, escape di caratteri speciali, ecc...). E ci penserebbe poi il XyzEditorKit a "parsare" il documento e a generare tutti gli Element e AttributeSet necessari.

I due livelli sono praticamente come quello che succede nei browser. Leggono un documento HTML che è di per sé testo ma lo parsano e generano tutto il DOM, il modello ad oggetti che viene tenuto in memoria.

Se vuoi aggiungere a basso livello del testo blu al fondo di uno StyledDocument, devi fare ad esempio:

codice:
SimpleAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setForeground(attr, Color.BLUE);
tuoStyledDoc.insertString(styledDoc.getLength(), "questo è blu", attr);
Lo vedi bene che non tutto è in String. Il contenuto (testo puro che viene poi stilizzato) è un String.

Non servirebbe mettere in quella stringa roba HTML es. "<font color='blue'>questo è blu</font>" perché nel componente tu leggeresti proprio questa stringa. Non la capisce a quel livello. È una stringa di testo puro che poi viene stilizzata visivamente grazie agli AttributeSet.