如何在jTextArea中为所选文本设置字体颜色?

时间:2013-05-28 11:26:51

标签: java jtextarea

我必须为jTextArea中的选定文本设置定义的颜色(如红色)。这就像在文本区域(jTextArea)中突出显示进程一样。当我选择特定文本并单击任何按钮时,它应该以预定义的颜色更改。

如果有任何解决方案,我可以将jTextArea更改为jTextPane或JEditorPane。

2 个答案:

答案 0 :(得分:4)

样式文本(带有字符的颜色属性)可用作StyledDocument,可在JTextPane和JEditorPane中使用。所以使用JTextPane。

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
    StyledDocument doc = textPane.getStyledDocument();
    int start = textPane.getSelectionStart();
    int end = textPane.getSelectionEnd();
    if (start == end) { // No selection, cursor position.
        return;
    }
    if (start > end) { // Backwards selection?
        int life = start;
        start = end;
        end = life;
    }
    Style style = textPane.addStyle("MyHilite", null);
    StyleConstants.setForeground(style, Color.GREEN.darker());
    //style = textPane.getStyle("MyHilite");
    doc.setCharacterAttributes(start, end - start, style, false);
}                                      

介意:可以在创建JTextPane时设置样式,并且如分析后的代码所示,从JTextPane字段中检索。

答案 1 :(得分:1)

首先,您无法使用JTextArea执行此操作,因为它是纯文本区域。您必须使用样式文本区域,如JEditorPane.see here。您可以使用HTMLDocument并执行您想要的操作。见here