首页 > Java > java教程 > 如何在 Java Swing 中超越 JTextArea 实现自定义文本着色?

如何在 Java Swing 中超越 JTextArea 实现自定义文本着色?

Susan Sarandon
发布: 2024-11-27 00:46:10
原创
421 人浏览过

How to Achieve Custom Text Coloring in Java Swing Beyond JTextArea?

JTextArea 替代方案中的自定义文本着色

在 JTextArea 中,应用文本格式会影响整个文档,而不是特定字符或部分。要实现自定义文本着色,请考虑使用 JTextPane 或 JEditorPane 等替代组件。

使用 JTextPane 自定义文本着色

JTextPane 允许您为文本的特定部分设置不同的颜色:

import java.awt.Color;
import java.awt.Insets;
import java.awt.event.EmptyBorder;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;

public class TextColoringDemo {

    public void setTextColors() {
        JTextPane textPane = new JTextPane();
        textPane.setBorder(new EmptyBorder(new Insets(10, 10, 10, 10)));

        StyleContext styleContext = StyleContext.getDefaultStyleContext();
        AttributeSet blueAttributeSet = styleContext.addAttribute(
                SimpleAttributeSet.EMPTY,
                StyleConstants.Foreground,
                Color.BLUE
        );

        AttributeSet greenAttributeSet = styleContext.addAttribute(
                SimpleAttributeSet.EMPTY,
                StyleConstants.Foreground,
                Color.GREEN
        );

        AttributeSet redAttributeSet = styleContext.addAttribute(
                SimpleAttributeSet.EMPTY,
                StyleConstants.Foreground,
                Color.RED
        );

        AttributeSet orangeAttributeSet = styleContext.addAttribute(
                SimpleAttributeSet.EMPTY,
                StyleConstants.Foreground,
                Color.ORANGE
        );

        // Set the color of specific text sections
        textPane.setCharacterAttributes(blueAttributeSet, true);
        textPane.replaceSelection("LOAD R1, 1\n");
        textPane.setCharacterAttributes(blueAttributeSet, true);
        textPane.replaceSelection("DEC R1\n");
        textPane.setCharacterAttributes(blueAttributeSet, true);
        textPane.replaceSelection("STORE M, R1\n");
        textPane.setCharacterAttributes(blueAttributeSet, true);
        textPane.replaceSelection("ADD R4, R1,8\n");

        textPane.setCharacterAttributes(greenAttributeSet, true);
        textPane.replaceSelection("R1\n");
        textPane.setCharacterAttributes(greenAttributeSet, true);
        textPane.replaceSelection("R4\n");

        textPane.setCharacterAttributes(redAttributeSet, true);
        textPane.replaceSelection("M\n");

        textPane.setCharacterAttributes(orangeAttributeSet, true);
        textPane.replaceSelection("1\n");
        textPane.setCharacterAttributes(orangeAttributeSet, true);
        textPane.replaceSelection("8\n");
    }
}
登录后复制

这种方法允许您自定义任何指定文本部分的颜色JTextPane 组件。

以上是如何在 Java Swing 中超越 JTextArea 实现自定义文本着色?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板