Как установить стиль текста, который будет набираться в JTextPane - PullRequest
2 голосов
/ 02 марта 2010

У меня есть JTextPane, и я могу изменить стиль части текста внутри него.

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

Использование setCharacterAttributes (start, length, style, attributeSet, replace) с length = 0, похоже, не делает этого.

Ответы [ 2 ]

4 голосов
/ 02 марта 2010

Если вы установите DocumentFilter в документе текстовой панели (при условии, что вы используете подкласс AbstractDocument, который имеет метод setDocumentFilter), вы можете добавить наборы атрибутов в текст, когда он вставляется или заменяется .

Edit:

В качестве быстрого примера, это реализация метода replace в DocumentFilter, который окрашивает текст в красный цвет, когда пользователь вводит 'a':

public void replace( FilterBypass fb, int offset, int length,
    String text, AttributeSet attrs ) throws BadLocationException
{
  if ( text.startsWith( "a" ) )
  {
    SimpleAttributeSet newAttrs = new SimpleAttributeSet();
    StyleConstants.setForeground( newAttrs, Color.RED );
    attrs = newAttrs;
  }

  super.replace( fb, offset, length, text, attrs );
}
1 голос
/ 02 марта 2010

попробуйте это:

    doc.setCharacterAttributes(0, doc.getLength() + 1, attributeSet, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...