我正在尝试使用将文本输出为 HTML 的 JTextPane 创建一个文本编辑器。我想包括粗体、颜色和对齐文本的选项。我在更改混合粗体和非粗体的文本选择的颜色时遇到问题。例如,如果我在编辑器中有文本“粗体文本不是粗体文本”并且我突出显示两个单词并尝试更改文本的颜色,它会更改颜色并使所有文本变为粗体,而不是留下第二个字不加粗。所以我不确定这个问题来自哪里,是否与 setCharacterAttributes 有关,或者是否将文本输出为 html 存在问题。这是我的一些使文本变为粗体的代码:
MutableAttributeSet attrs = pane.getInputAttributes();
StyleConstants.setBold(attrs, bold);
pane.getStyledDocument().setCharacterAttributes(p.getSelectionStart(),len,attrs,false);
这是我更改文本颜色之前和之后 html 输出的示例。这只是身体标签内部的内容
之前: 粗体文本不是粗体文本
将颜色更改为红色后: 粗体文本不是粗体文本
它与选择的第一个单词是否为粗体有关。如果我做了同样的例子,但第二部分是粗体而第一部分不是粗体,那么它工作正常。因此,它与文本选择的开头为粗体时有关。