我有一个 JTextPane(或 JEditorPane),我想在其中添加一些按钮来格式化文本(如图所示)。
当我将所选文本更改为粗体(创建新样式)时,字体系列(和其他属性)也会更改。为什么?我想设置(或删除)所选文本中的粗体属性,而其他属性保持不变。
这就是我正在尝试的:
private void setBold(boolean flag){
HTMLDocument doc = (HTMLDocument) editorPane.getDocument();
int start = editorPane.getSelectionStart();
int end = editorPane.getSelectedText().length();
StyleContext ss = doc.getStyleSheet();
//check if BoldStyle exists and then add / remove it
Style style = ss.getStyle("BoldStyle");
if(style == null){
style = ss.addStyle("BoldStyle", null);
style.addAttribute(StyleConstants.Bold, true);
} else {
style.addAttribute(StyleConstants.Bold, false);
ss.removeStyle("BoldStyle");
}
doc.setCharacterAttributes(start, end, style, true);
}
但正如我上面解释的,其他属性也会发生变化:
任何帮助将不胜感激。提前致谢!