получение значений JTextPane AttributeSet - PullRequest
2 голосов
/ 17 ноября 2010

При использовании метода 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 ]

2 голосов
/ 17 ноября 2010

Используйте Элемент Документа, чтобы получить атрибуты:

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

Получив корневой элемент, вы можете получить элементы, связанные с выбранным вами текстом. Начните с нахождения элемента по начальному смещению, а затем продолжайте цикл по каждому элементу, пока не достигнете конечного смещения.

0 голосов
/ 20 ноября 2010
StyledDocument doc=(StyledDocument)textComponent.getDocument();
int selStart=textComponent.getSelectionStart();
int selEnd=textComponent.getSelectionEnd();

Затем используйте метод doc.getCharacterElement (), передавая start, чтобы получить первый символ.Затем, используя элемент getEndOffset (), вы можете получить следующий элемент char.Проверьте смещение начала и конца элемента, чтобы оно было меньше конца выбора.

...