Andei conversando com o André aqui (o mesmo que fez o editor de texto desse link http://www.guj.com.br/posts/list/48736.java) e ele me explicou que o ideal é usar um filho do JEditorPane, chamado JTextPane.
Basicamente, você não edita o JTextPane diretamente. Você faz isso através da interface document. Por exemplo, para adicionar um texto no pane você faz:
protected void append(String msg) {
Document doc = pane.getDocument();
msg += "\n";
try {
doc.insertString(doc.getLength(), msg, null);
} catch (BadLocationException ex) { ex.printStackTrace(); }
}
O terceiro parâmetro do insertString (que está null) é um AttributeSet. Nele, você poderia alterar os atributos do texto a ser inserido, como colocar cor ou deixar em negrito.
Por exemplo, você poderia fazer um AttributeSet assim:
SimpleAttributeSet attrs = new SimpleAttributeSet();
StyleConstants.setForeground(attrs, Color.red);
StyleConstants.setItalic(attrs, true);
StyleConstants.setBold(attrs, true);
Se eu descobrir mais coisa, posto por aqui…
Há um tutorial sobre document aqui mesmo no GUJ:
http://www.guj.com.br/java.tutorial.artigo.29.1.guj