Java StyledDocument: Как я могу гарантировать, что то, что пользовательские типы никогда не будут отображать, уже стилизовано? - PullRequest
1 голос
/ 13 ноября 2010

Пользователь набирает текст.Когда они нажимают кнопку, то, что они ввели, разделяется и кодируется цветом:

colors.setCharacterAttributes(characters, tokens[x].length(), formatBlue, true);

Использование набора правил.


Когда они выполняют редактирование между позициями какопределяется как characters и позиция characters + tokens[x].length(), которая подходит в моем стиле formatBlue.

Однако я бы хотел, чтобы он был черным, пока пользователь не нажмет следующий код цвета'Кнопка у меня есть.

Короче говоря: желаемый эффект состоит в том, что все, что набирается, должно всегда быть черным, пока оно не будет сформулировано и окрашено программой по-разному.На данный момент лучшее решение, которое у меня есть, - это определить, когда каретка меняет положение, а затем сделать:

setLogicalStyle(textArea.getCaretPosition(), formatBlack)

Буду признателен за любые лучшие предложения.

Ответы [ 2 ]

1 голос
/ 14 ноября 2010

Вы можете получить EditorKit с вашего JEditorPane. Это экземпляр StyledEditorKit. Таким образом, вы можете получить InputAtributes из набора и удалить все атрибуты. Таким образом, все наборы будут использовать пустой AttributeSet.

1 голос
/ 13 ноября 2010

желаемый эффект состоит в том, что все, что печатается, всегда должно быть черным

Вы можете попробовать использовать DocumentFilter.Если текст, который должен быть вставлен, не содержит атрибута, тогда вы назначаете черный атрибут по умолчанию.

Прочтите раздел из учебника Swing по Реализация фильтра документов для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...