You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查jEditorPane指定索引字符是否为粗体、斜体或下划线格式?

检查jEditorPane中文本指定位置的格式属性

嘿,这个问题我熟!首先得纠正一个小误区:你存的chr变量只是字符本身,它本身不带任何格式信息——格式是和文本在文档中的位置绑定的样式属性,所以得从文档的样式集合里去查才行。

下面是具体的实现步骤和代码示例:

核心思路

jEditorPane默认使用的HTMLDocument(或者通用的StyledDocument)会把文本的样式信息存在AttributeSet里,我们可以通过指定位置获取对应的属性集,再检查粗体、斜体、下划线的属性值。

具体代码实现

// 1. 获取jEditorPane的文档,强制转换为StyledDocument(HTMLDocument是它的子类)
StyledDocument doc = (StyledDocument) jEditorPane1.getDocument();
// 2. 指定要检查的索引位置(这里以你提到的第1个字符,索引0为例)
int targetPos = 0;

// 3. 获取该位置字符对应的样式属性集
AttributeSet charAttrs = doc.getCharacterElement(targetPos).getAttributes();

// 4. 分别检查三种格式属性
// 检查粗体
boolean isBold = charAttrs.containsAttribute(Font.BOLD, Boolean.TRUE);
// 检查斜体
boolean isItalic = charAttrs.containsAttribute(Font.ITALIC, Boolean.TRUE);
// 检查下划线(注意用TextAttribute.UNDERLINE_ON这个常量)
boolean isUnderlined = charAttrs.containsAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);

// 测试输出
if (isBold) {
    System.out.println("索引" + targetPos + "的字符是粗体");
}
if (isItalic) {
    System.out.println("索引" + targetPos + "的字符是斜体");
}
if (isUnderlined) {
    System.out.println("索引" + targetPos + "的字符带有下划线");
}

注意事项

  • 要确保targetPos是有效的索引:不能小于0,也不能大于等于文档的总长度(可以用doc.getLength()获取总长度),否则会抛出异常。
  • 如果你的jEditorPane用的是纯文本格式(不是HTML),只要文档是StyledDocument类型,这个方法依然适用。
  • 对于HTML文档里的样式,比如<b>、<i>、<u>标签包裹的文本,这个方法也能正确识别对应的格式属性。

内容的提问来源于stack exchange,提问作者user3776022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:37:24