Bonjour à tous,
j'utilise java netbeans et Je cherche à savoir comment faire pour modifier la couleur de certain mot dans un JTextArea
Merci de votre aide.
Version imprimable
Bonjour à tous,
j'utilise java netbeans et Je cherche à savoir comment faire pour modifier la couleur de certain mot dans un JTextArea
Merci de votre aide.
Salut,
Le plus simple est d'utiliser un JTextPane à la place d'un JTextArea et d'utiliser du HTML :
Tu peux également gérer les styles en direct :Code:
1
2
3
4
5
6
7
8
9
10
11
12 JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTextPane textArea = new JTextPane(); textArea.setContentType("text/html"); textArea.setText("<html><body><p>Un <span style='color:blue;'>mot</span> en <span style='color:red;'>rouge</span></body></html>"); frame.add(textArea); frame.setSize(300, 300); frame.setLocationRelativeTo(null); frame.setVisible(true);
Il y a d'autres possibilités avec ce système, comme d'appliquer le style à la sélection courante (on peut gérer d'autres attributs que la couleur bien sûr), et changer les styles pendant que le document est affiché.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final DefaultStyledDocument doc = new DefaultStyledDocument(new StyleContext()); // un utilise un type de document stylé JTextPane textArea = new JTextPane(doc); textArea.setText("Un mot en rouge."); final Style couleurRougeStyle = textArea.addStyle("couleurRouge", null); // on créé un style (on peut créer des styles qui héritent d'autre style) couleurRougeStyle.addAttribute(StyleConstants.Foreground, Color.RED); // on affecte un attribut de type couleur de texte et de valeur rouge doc.setCharacterAttributes(10, 5, couleurRougeStyle, true); // on applique le style sur une partie du texte (le mot rouge ici) frame.add(textArea); frame.setSize(300, 300); frame.setLocationRelativeTo(null); frame.setVisible(true); }