Я пытаюсь создать текстовый редактор, используя JTextPane, который выводит текст как HTML. Я хочу включить опции для выделения жирным шрифтом, цвета и выравнивания текста. У меня возникла проблема с изменением цвета выделенного текста, который является смелым и полужирным. Например, если у меня есть текст в редакторе " полужирный текст не жирный текст", и я выделяю оба слова и пытаюсь изменить цвет текста, он меняет цвет и делает весь текст полужирным, вместо того, чтобы оставлять второй слово не жирное. Поэтому я не уверен, откуда эта проблема возникает, если она связана с setCharacterAttributes или если проблема связана с выводом текста в виде html. вот мой код, который делает текст полужирным:
MutableAttributeSet attrs = pane.getInputAttributes();
StyleConstants.setBold(attrs, bold);
pane.getStyledDocument().setCharacterAttributes(p.getSelectionStart(),len,attrs,false);
Вот пример того, как выглядит html-вывод до и после изменения цвета текста. Это как раз то, что внутри тегов тела
Before: полужирный текст не жирным шрифтом
После изменения цвета на красный: полужирный текст не полужирный текст
И это как-то связано с тем, выделено ли первое слово выделения. Если бы я сделал тот же пример, но вторая часть была выделена жирным шрифтом, а первая часть не была выделена жирным шрифтом, тогда она отлично работает. Таким образом, это связано с тем, когда начало выделения текста выделено жирным шрифтом.
Есть ли действие, которое позволяет вам "разворачивать" текст?
Создайте и примените подходящий SimpleAttributeSet
такой как normal
, увиденный здесь.
вот мой код, который делает текст полужирным:
Не знаю, как используется этот код. Но я бы сказал, что лучший способ сделать это - просто использовать стандартное Bold Action, найденное в StyledEditorKit
.
Прочтите учебник Swing по компонентам текстовых компонентов для простого примера редактора. В примере используется JTextPane, но концепции создания элементов меню будут одинаковыми.