1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como mudar a cor de uma palavra ou caractere em um JtextField

Olá amigos, estou criando um editor de texto, já tem boa parte pronta, mas agora eu queria destacar determinadas palavras chave colorindo-as. Procurei por varias coisas genéricas, mas só encontrei as mesmas coisas, coisas que não se aplicam, como por exemplo:

campo.setForeground(new java.awt.Color(41, 255, 42));

tentei implementar na seguinte POG que fiz para deixar apenas uma determinada palavra maiúscula:

 //Defina a palavra que ira ficar em evidencia.                            
     String teste = "import"; 
     //teste.setForeground(new java.awt.Color(0,0,255));
     //Crie uma condição (Se digitar "palavra" então faça a seguinte função)
     if(campo.getText().contains("import")){ 
     String digitado = (String) campo.getText().replace("import", "");

     //Pega a String de jTextArea1
     String str = campo.getText(); 
     campo.setText("");
     //Defina VARIAVEL.toUpperCase();
     campo.setText(digitado + teste.toUpperCase());

     }

Tentando alterar somente a ultima linha, pois a logica parece a mesma, ja que quero apenas mudar a cor da palavra em vez de deixa-la maiúscula. Mas nada funcionou, então procurei por: "Como alterar a cor de strings, caracteres e genéricos" Encontrei isso:

http://www.javaworld.com/article/2077406/learn-java/a-splash-of-text-color-with-your-java.html

Mas não entendi, parece ser a solução.

E isso, o cara deu uma ideia:

http://www.guj.com.br/3656-mudar-a-cor-de-uma-palavra-em-um-jtextpane

Fora os links que me deram esperança, mas que estão off:

http://javafree.uol.com.br/topic-885099-Como-mudar-a-cor-de-palavras-ou-caracteres-em-um-jTextArea-ou-jTextPane.html

Alguém tem alguma ideia? alguma dica? algo que seja simples de se fazer.

Obrigado desde já.

EDITED:

Com base nisso:

http://www.guj.com.br/java/279904-resolvidomudar-cor-texto-em-jtexarea-ou-jtextpane

//Método para selecionar as cores baseado no texto que é passado  
    private Color getColor(String text){  
        if(text.contains("<nome>")){  
            return Color.blue;  
        }else if(text.contains("<imports>")){  
            return Color.RED;  
        }else if(text.contains("<valor>")){  
            return new Color(0,140,0);  
        }else if(text.contains("<tipo>")){  
            return new Color(0, 0, 150);  
        }  
        return Color.black;  
    }

Adaptei ficando assim:

if(campo.getText().contains("teste4")){  
            return Color.blue;  
        }else if(campo.getText().contains("teste3")){  
            return Color.RED;  
        }else if(campo.getText().contains("teste2")){  
            return new Color(0,140,0);  
        }else if(campo.getText().contains("teste1")){  
            return new Color(0, 0, 150);  
        }  
        return Color.black;

Agora as únicas linhas que dão errado são:

 return Color.RED;  //Por exemplo

Isso é o que atribuiria a cor a determinada palavra?

...

EDITED: Achei isso para colorir strings, mas somente em JoptionPane, Jcombobox, etc, mas serve para JTextField, alguma ideia?

http://www.guj.com.br/java/137511-aplicar-cor-numa-string

http://javafree.uol.com.br/topic-11994-JComboBox-com-itens-coloridos.html

String  
teste = "<html><font color=BLUE>Lina Ferreira</font></html>";  
JOptionPane.showMessageDialog(null,teste);

Se isso funcionasse pra JTextField.......

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.