我正在开发一个编辑器,我有一个用于字体大小的组合框。用户可以使用它来改变文本大小。
我还实现了插入符听众,它告诉我所选文本的大小并相应地更新组合框。现在,如果用户选择两种不同尺寸的文本,我想在Combobox中填充空白值。但我无法用Caret听众这样做,因为它给了我第一个文本的大小。
例如:如果我的文字是“HI”。这里的H大小为12,而我的大小为22.现在当我选择“HI”时,插入符号给我的值为12或22。
以下是示例代码:
StyledDocument doc = pane.getStyledDocument();
MutableAttributeSet fontSizeStyle = ((StyledEditorKit)pane.getEditorKit()).getInputAttributes();
int fontSize = StyleConstants.getFontSize(fontSizeStyle);
答案 0 :(得分:2)
下面的代码将遍历Jtextpane中的所选文本并获取每个字符的大小。
String selectedText = pane.getSelectedText();
int k = pane.getSelectionStart();
for(int i=0; i< selectedText.length(); i++) {
AttributeSet fontSize = doc.getCharacterElement(k).getAttributes();
System.out.println("fontSize:"+StyleConstants.getFontSize(fontSize));
k++;
}