Mudando Cor de uma parte do texto

Pessoal estou criando um JTextArea que vai ter algumas ações de formatação, mas estou com o seguinte problema:

Como posso fazer para quando o usuario digitar uma certa palavra, apos digita-la ela trocar de cor, é tipo a mesma coisa que acontece no eclipse quando digitamos a palavra public.

Quem puder me ajudar, fico grato.

Olha, dei uma pesquisada e não achei nada que trate diretamente do texto contido no JTextArea. Sinto não poder ajudar, mas convem dar uma olhada na API do Java - JTextArea
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JTextArea.html
E caçar a palavra “color” talvez ajude.
abraço

ksi, não consegui achar nada referente na documentação da API, mas valeu pela dica!

Para mudar a cor do texto, usa esse código (cor = a cor que você kr dar. e texto é a String texto (ou parte da string)):

StyleContext sc = StyleContext.getDefaultStyleContext();
			AttributeSet aSet = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, cor);
			texto.setCharacterAttributes(aSet, true);

E para mudar a cor de uma palavra depois de digitada, eu faria tipo assim: adicionava um KeyEvent no campo de texto, e criava uma outra string com o conteúdo que ficasse entre 1 ponto, virgula, ponto e virgula, espaço… pontuação em geral, usando split. Ai, eu verificava se aquela palavra fosse a que eu quisesse mudar de cor, e se fosse, usava aquele código acima.

Mas acho que deve ter algo + prático.

Olha m4des,

O que vc acha de vc criar um list com as palavras especiais que deseja colorir: List verdeList, List azulList etc. Só que dai a cada keyEvent vc tomar a palavra escrita a partir do ultimo espaço e faz um match correndo o list. Talvez seja bom usar regex. E vai incrementando o obj do StringBuilder e atualizando o JTextArea.

Pra mudar a cor vc pode usar codigos html no meio da string - eu acho q dá certo para JTextArea tambem.

Ficaria algo assim: StringBuilder bufTexto += "<html><font color="+ corListQuePertencePalavra + ">" + palavraDigitadaDesdeEspacoBranco + "</font></html>" ;

Na verdade eu não acho minha soluçao boa não, mas foi o q me veio na cabeça, desconfio que o desempenho disso seja muito ruim :roll: ; quem contribui em projetos de IDEs, que poderia te dar melhor dica, ainda que essas tenha toda uma gama de APIs proprias.

Pessoal ta meio foda de fazer, mas valeu pela ajuda!