2015-11-04 2 views
0

J'essaie de changer la couleur d'une surbrillance dans TextArea ou TextPane ou même dans d'autres.JTextArea ou JTextPane Définir la couleur du texte en surbrillance

Notez que je suis à la recherche pour changer la couleur de:

enter image description here

Et pas le texte.

J'ai aussi pris un coup d'œil à la fonction de setHighlighter()JTextArea mais il semble que je vais devoir entrer une classe Highlighter anonyme que je ne sais absolument pas comment mettre en œuvre tous les remplacements.

jta.setHighlighter(new Highlighter() { 
    @Override 
    public void removeHighlight(Object tag) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void removeAllHighlights() { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void paint(Graphics g) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void install(JTextComponent c) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public Highlight[] getHighlights() { 
     // TODO Auto-generated method stub 
     return null; 
    } 
    @Override 
    public void deinstall(JTextComponent c) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void changeHighlight(Object tag, int p0, int p1) 
      throws BadLocationException { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public Object addHighlight(int p0, int p1, HighlightPainter p) 
      throws BadLocationException { 
     // TODO Auto-generated method stub 
     return null; 
    } 
}); 
+0

Avez-vous essayé de paramétrer la méthode 'paint (Graphics g)'? comme 'g.setColor (Color.color);' – 3kings

+0

Juste essayé, ils mettent en évidence le texte seulement. En outre, ils ne désaccentuent pas le texte après que vous l'avez désélectionné –

+0

Essayez la réponse ci-dessous qui devrait vous aider davantage – 3kings

Répondre

1

Si vous voulez parler de la couleur de surlignage « normale » (lorsque vous faites glisser votre souris sur le texte), cela peut simplement être réalisé par

textArea.setSelectionColor(Color.LIGHT_GRAY); 

(ou quelle que soit la couleur que vous voulez qu'il ait.)

Si vous voulez mettre en évidence une programmation séquence de caractères dans votre zone de texte:

String searchedWord = "word"; 
int pos1 = textArea.getText().indexOf(searchedWord); 
int pos2 = pos1 + searchedWord.length(); 
try { 
    textArea.getHighlighter().addHighlight(pos1, pos2, 
      new DefaultHighlighter.DefaultHighlightPainter(Color.LIGHT_GRAY)); 
} catch (BadLocationException e) { 
    e.printStackTrace(); 
} 

(La même chose fonctionne également pour un JTextPane)

+0

Les deux conduisent à changer la couleur du texte. Ce que je voulais dire, comme indiqué ci-dessus, changer la couleur du surligneur. Peut-être devrais-je rendre le pointeur moins gros? –

+0

@MoonCheesez Vraiment? Cela ne change pas la couleur du texte pour moi ... [Click me] (http://i.stack.imgur.com/2embp.png) –

+1

Je pense que j'ai trouvé le problème ... J'ai mis la couleur à ' nouvelle couleur (26, 38, 59, 27) 'Par conséquent, il retourne une couleur de surbrillance si faible que je ne pouvais pas voir et il a placé la couleur du texte inversé. –