如何更改两个位置之间的文本颜色?

时间:2015-11-29 03:09:18

标签: java swing colors highlight

我想在突出显示时从两点改变我的Swing应用程序(JTextPane)文本的颜色。如果用户突出显示来自索引4到9的短语,则只有这些字符会永久地更改其颜色。我永久地说,因为我已经知道有一个setSelectionColor()选项,但这只是暂时的。我已设法获得突出显示文本的起点和终点,但我已达到死胡同。

这是我到目前为止所做的:

StyleContext sc = StyleContext.getDefaultStyleContext();
AttributeSet attributes = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, color);

    if(tp.getSelectedText() != null){//tp is a jtextpane. text is highlighted. change highlighted text color
        int start = tp.getSelectionStart();
        int end = tp.getSelectionEnd();
        //update the color of the text within start and end
    }
tp.setCharacterAttributes(attributes, false);//update the color for the new text

1 个答案:

答案 0 :(得分:4)

  

我已设法获得突出显示文本的起点和终点

您可以使用以下内容设置文本的属性:

//  Define a keyword attribute

SimpleAttributeSet keyWord = new SimpleAttributeSet();
StyleConstants.setForeground(keyWord, Color.RED);
StyleConstants.setBackground(keyWord, Color.YELLOW);
StyleConstants.setUnderline(keyWord, Boolean.TRUE );
StyleConstants.setBold(keyWord, true);

//  Change attributes on some text

StyledDocument doc = textPane.getStyledDocument();
doc.setCharacterAttributes(start, end - start, keyWord, false);

您还可以使用StyledEditorKit动作来设置文本样式(粗体,斜体,颜色......)。阅读Text Component Features上Swing教程中的部分,了解更多信息和工作示例。