Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mewarnakan Teks Khusus dalam JTextArea?

Bagaimana untuk Mewarnakan Teks Khusus dalam JTextArea?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 10:31:03409semak imbas

How to Color Specific Text in a JTextArea?

Cara Memanipulasi Warna Teks dalam JTextArea

JTextArea lazimnya mengendalikan teks biasa, di mana atribut pemformatan seperti warna digunakan secara seragam pada keseluruhan dokumen. Walau bagaimanapun, jika anda ingin menyesuaikan warna teks bahagian tertentu dalam JTextArea, anda boleh menggunakan JTextPane atau JEditorPane.

Menggunakan JTextPane, anda boleh meningkatkan kawasan teks dengan keupayaan penyesuaian warna:

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();
            }
        });
    }
}

Dalam kod ini, kaedah appendToPane menambahkan teks pada anak tetingkap teks sambil menetapkan warna yang sesuai. Hasilnya ialah kawasan teks di mana bahagian teks yang berbeza mempamerkan warna yang berbeza, membolehkan perwakilan visual kata kunci atau data khas yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk Mewarnakan Teks Khusus dalam JTextArea?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn