Проблема в том, что parentTextPane.getCharacterAttributes()
вернет атрибуты символа для персонажа после текущей позиции каретки. Поскольку ваш выбор включает в себя текст надстрочного индекса, следующий символ является нормальным. Это атрибуты для этого следующего символа, который вы тестируете, и результат будет false
. У вас есть возможность делать то, что getCharacterAttributes()
(из JTextPane
):
public AttributeSet getCharacterAttributes() {
StyledDocument doc = getStyledDocument();
Element run = doc.getCharacterElement(getCaretPosition());
if (run != null) {
return run.getAttributes();
}
return null;
}
за исключением того, что вы хотите вернуть начало вашего выбора:
public AttributeSet getMyCharacterAttributes() {
StyledDocument doc = parentTextPane.getStyledDocument();
Element run = doc.getCharacterElement(parentTextPane.getSelectionStart());
if (run != null) {
return run.getAttributes();
}
return null;
}
Ваш код изменится на что-то вроде следующего:
SimpleAttributeSet sasText = new SimpleAttributeSet(getMyCharacterAttributes());
//... the rest of your code