检索JTextPane AttributeSet值

时间:2010-11-17 18:16:18

标签: java swing attributes jtextpane

使用JTextPane方法insertIcon()时,javadoc声明 "...This is represented in the associated document as an attribute of one character of content."

如何检索有关插入图标的信息?我尝试了getCharacterAttributes()只有 "Fetches the character attributes in effect at the current location of the caret, or null."

是否存在一种方法来查找文本选择或某个索引中的所有属性,而不仅仅是当前插入位置?

修改
下面是一些示例代码,我拼凑在一起以获取嵌入图标的文件名。

Element root = jTextPane.getDocument().getDefaultRootElement();
BranchElement current = (BranchElement) root.getElement(0);
if (current != null)
{
    Enumeration children = current.children();
    while (children.hasMoreElements())
    {
        Element child = (Element) children.nextElement();
        if (child.getName().equals("icon"))
        {
            AttributeSet attrSet = child.getAttributes();
            ImageIcon icon = (ImageIcon) StyleConstants.getIcon(attrSet);
            System.err.println(icon.getDescription());
        }
    }
}

2 个答案:

答案 0 :(得分:2)

使用文档元素获取属性:

Element root = textComponent.getDocument().getDefaultRootElement();

获得根元素后,您可以获得与所选文本相关的元素。首先在起始偏移处找到Element,然后循环遍历每个Element,直到到达结束偏移。

答案 1 :(得分:0)

StyledDocument doc=(StyledDocument)textComponent.getDocument();
int selStart=textComponent.getSelectionStart();
int selEnd=textComponent.getSelectionEnd();

然后使用doc.getCharacterElement()方法传递start来获取第一个char元素。然后使用elem getEndOffset(),您可以获得下一个char元素。检查elem开始和结束偏移量是否小于选择结束。