Изменить определенные атрибуты 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);