Este método não funciona como uma substring e colore…?
/*
* O código abaixo mostra como colorir uma parte do texto
* com fundo amarelo, começando no 5º caractere com comprimento de 4 caracteres:
StyleConstants.setBackground(texto.getInputAttributes(), Color.YELLOW);
texto.getStyledDocument().setCharacterAttributes(5, 4, texto.getInputAttributes(), false);
*/