Изменить определенные атрибуты String в StyledDocument

Я пытаюсь создать текстовый редактор. Я использую JTextPane с StyledDocument. Я пытаюсь реализовать способ изменить атрибуты выделенного текста.

Это работает следующим образом: пользователь вводит нужный текст. После этого он может изменить любые атрибуты String (семейство шрифтов, размер шрифта, независимо от того, выделен он жирным шрифтом / курсивом или нет), выбрав его и нажав кнопку, где с помощью флажков и раскрывающихся списков можно будет выбрать нужные изменения.

Могу ли я изменить атрибуты выбранной строки без необходимости перестраивать документ? Я искал, но не смог найти правильного решения.

3 ответа

Решение

Вы можете использовать действия, предоставляемые StyledEditorKit, рассматривается здесь и обсуждается в разделе Как использовать панели редактора и текстовые панели.

образ

Вы бы использовали метод setCharacterAttributes из StyledDocument.

Вот пример из одного из моих приложений Swing, который выделяет текст выделенным цветом.

        StyleContext sc = StyleContext.getDefaultStyleContext();
        AttributeSet aset = sc.addAttribute(
                SimpleAttributeSet.EMPTY,
                StyleConstants.Foreground, highlightColor);
        cobolProgram.setCharacterAttributes(offset, length, aset,
                false);

Вы можете использовать другие StyleConstants для изменения других атрибутов стиля.

В моем случае я "очистил" стиль, когда пользователь изменяет текст:

StyledDocument doc = tf.getStyledDocument();

//clean style
doc.setCharacterAttributes(0, sb.length(), DEF, true); 
Другие вопросы по тегам