制作文本命令,例如着色文本

时间:2012-05-18 23:11:10

标签: java swing user-interface text jtextarea

我想创建一个方法来分析String,每当找到文本命令(例如/r将文本变为红色)时,文本命令不会显示,并且应用于命令后的文本。

例如,字符串:

"Hello /rworl/bd"

输出如下:

"Hello world" 

"Hello worl"为红色文字,最终d为蓝色。我知道如何更改文本颜色,使其变为粗体等。

在命令后选择文本有什么好方法?

2 个答案:

答案 0 :(得分:2)

我找不到在JTextArea上使用多种字体的好方法,但在这里它使用标签和html。当你输入字母将是黑色。如果按“/”,它将等待文本字符决定颜色。如果您按“r”,则以下字母的字体将设置为红色,“b”表示蓝色。

public class TextColour implements KeyListener {
    JLabel label;
    String red = "<font color='FF0000'>";
    String blue = "<font color='0000FF'>";
    String text = "";
    boolean colour = false;

    public static void main(String[] args) {
        new TextColour();

    }

    public TextColour() {
        JFrame frame = new JFrame();
        JTextArea area = new JTextArea();

        area.addKeyListener(this);
        label = new JLabel();

        frame.setPreferredSize(new Dimension(400, 100));
        frame.getContentPane().add(area);
        frame.getContentPane().add(label);

        frame.pack();
        frame.setVisible(true);
    }

    @Override
    public void keyPressed(KeyEvent key) {
        char letter = key.getKeyChar();
        if (colour) {
            if (letter == 'r') {
                text += red;
            } else if (letter == 'b') {
                text += blue;
            }
            colour = false;
        } else if (letter == '/') {
            colour = true;
        } else {
            text += key.getKeyChar();
        }
        label.setText("<html>" + text + "</html>");
    }

    @Override
    public void keyReleased(KeyEvent arg0) {
    }

    @Override
    public void keyTyped(KeyEvent arg0) {
    }
}

答案 1 :(得分:1)

JTextArea是纯文本的组件。单一字体,风格和尺寸,&amp;可以设置一个前景色和背景色。对于格式化的不可编辑文本,请使用@Glitch建议的JLabel。对于可编辑文字,请使用JEditorPaneJTextPane等组件。

请参阅教程的How to Use Editor Panes and Text Panes部分:更多详细信息,工作代码..&amp;可爱的屏幕截图。 :)

enter image description here