Maison  >  Article  >  Java  >  Comment colorer un texte spécifique dans un JTextArea ?

Comment colorer un texte spécifique dans un JTextArea ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-19 10:31:03409parcourir

How to Color Specific Text in a JTextArea?

Comment manipuler la couleur du texte dans JTextArea

JTextArea gère généralement le texte brut, où les attributs de formatage tels que la couleur s'appliquent uniformément à l'ensemble du document. Cependant, si vous souhaitez personnaliser la couleur du texte de parties spécifiques d'un JTextArea, vous pouvez utiliser JTextPane ou JEditorPane.

En utilisant JTextPane, vous pouvez améliorer la zone de texte avec des capacités de personnalisation des couleurs :

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;

public class TextPaneTest extends JFrame {

    private JPanel topPanel;
    private JTextPane tPane;

    public TextPaneTest() {
        // ... (Initialize components and set layout)

        // Create a custom method to append text with specified color
        appendToPane(tPane, "My Name is Too Good.\n", Color.RED);
        appendToPane(tPane, "I wish I could be ONE of THE BEST on ", Color.BLUE);
        appendToPane(tPane, "Stack", Color.DARK_GRAY);
        appendToPane(tPane, "Over", Color.MAGENTA);
        appendToPane(tPane, "flow", Color.ORANGE);

        // Add the text pane to the content pane
        getContentPane().add(topPanel);

        // ... (Finishing touches for the frame)
    }

    private void appendToPane(JTextPane tp, String msg, Color c) {
        StyleContext sc = StyleContext.getDefaultStyleContext();
        AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);

        aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");
        aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED);

        int len = tp.getDocument().getLength();
        tp.setCaretPosition(len);
        tp.setCharacterAttributes(aset, false);
        tp.replaceSelection(msg);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new TextPaneTest();
            }
        });
    }
}

Dans ce code, la méthode appendToPane ajoute du texte au volet de texte tout en définissant la couleur appropriée. Le résultat est une zone de texte dans laquelle différentes sections de texte présentent des couleurs distinctes, permettant une représentation visuelle améliorée de mots-clés ou de données spéciaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn