Я разрабатываю простой редактор WYSIWYG RTF на Java и имею небольшую проблему. Мне нужно иметь возможность синхронизировать кнопки выбора стиля (например, полужирный, курсив, подчеркнутый) для выбора текста пользователя. Например, если текущий выбор текста прост, выделены жирные, курсивные и подчеркнутые переключающие кнопки, но когда пользователь выбирает выделенный и выделенный текст, выделены жирные и подчеркнутые переключающие кнопки.JTextPane Synchronize Style UI Проблема
Теперь я уверен, что JTextPane.getInputAttributes()
получает мне атрибуты выбора, которые я хочу, но есть проблема с прослушиванием событий обновления каретки. Проблема заключается в том, что карет-слушатель, прикрепленный к JTextPane
, кажется, называется ПОСЛЕ того, как происходит изменение входного атрибута. Таким образом, выбор всегда на шаг впереди. То есть, я должен выбрать текст дважды перед обновлением кнопок переключения!
Важный код здесь:
textPane.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
syncAttributesWithUI(textPane.getInputAttributes());
}
});
И:
private void syncAttributesWithUI(AttributeSet attributes) {
boldButton.setSelected(StyleConstants.isBold(attributes));
italicButton.setSelected(StyleConstants.isItalic(attributes));
underlineButton.setSelected(StyleConstants.isUnderline(attributes));
}
Заранее спасибо!
На ваш вопрос ответили? Если нет, рассмотрите сообщение SSCCE –