Java Изменить цвет элемента на JTextPane, используя StyledDocument - PullRequest
1 голос
/ 17 марта 2012

это своего рода излишнее для меня .. Я использую JTextPane для чата, у меня есть цвета там .. Что я хочу, это со ссылкой на элемент, меняющий его цвет Я использую StyledDocument, я понятия не имею, как это сделать ..

Заранее спасибо;)

Ответы [ 2 ]

3 голосов
/ 17 марта 2012

Используйте setCharacterAttributes ().Определите нужный цвет в SimpleAttributeSet, используя StyleConstants.setBackground () / setForeground ().Используйте начальное и конечное смещения элемента для смещения и длины.

Если последний атрибут имеет значение false, заменяются только те атрибуты элемента, которые определены в SimpleAttributeSet.

2 голосов
/ 17 марта 2012

Похоже, то, что вы просите, может быть описано одним способом, посмотрите:

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

Просто попробуйте передать ссылку вашего JTextPane вместе с вашим String и соответствующим Colour, которые вы хотите предоставить, этому методу и увидите магию: -)

...