Ошибка при выделении текста жирным и цветным шрифтом в JTextPane

0

Я пытаюсь создать текстовый редактор, используя JTextPane, который выводит текст как HTML. Я хочу включить опции для выделения жирным шрифтом, цвета и выравнивания текста. У меня возникла проблема с изменением цвета выделенного текста, который является смелым и полужирным. Например, если у меня есть текст в редакторе " полужирный текст не жирный текст", и я выделяю оба слова и пытаюсь изменить цвет текста, он меняет цвет и делает весь текст полужирным, вместо того, чтобы оставлять второй слово не жирное. Поэтому я не уверен, откуда эта проблема возникает, если она связана с setCharacterAttributes или если проблема связана с выводом текста в виде html. вот мой код, который делает текст полужирным:

    MutableAttributeSet attrs = pane.getInputAttributes();
    StyleConstants.setBold(attrs, bold); 
    pane.getStyledDocument().setCharacterAttributes(p.getSelectionStart(),len,attrs,false);

Вот пример того, как выглядит html-вывод до и после изменения цвета текста. Это как раз то, что внутри тегов тела

Before: полужирный текст не жирным шрифтом

После изменения цвета на красный: полужирный текст не полужирный текст

И это как-то связано с тем, выделено ли первое слово выделения. Если бы я сделал тот же пример, но вторая часть была выделена жирным шрифтом, а первая часть не была выделена жирным шрифтом, тогда она отлично работает. Таким образом, это связано с тем, когда начало выделения текста выделено жирным шрифтом.

Теги:
swing
jtextpane

2 ответа

2

Есть ли действие, которое позволяет вам "разворачивать" текст?

Создайте и примените подходящий SimpleAttributeSet такой как normal, увиденный здесь.

Изображение 174551

2

вот мой код, который делает текст полужирным:

Не знаю, как используется этот код. Но я бы сказал, что лучший способ сделать это - просто использовать стандартное Bold Action, найденное в StyledEditorKit.

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

  • 0
    Есть ли действие, которое позволяет «разжечь» текст?
  • 0
    @AudreySmithDeyerle, вы пробовали код из учебника? Действия предназначены для переключения атрибутов.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню