如何识别JTextPane中选定的文本是否具有不同的大小?

时间:2013-03-30 05:50:33

标签: java swing jtextpane

我正在开发一个编辑器,我有一个用于字体大小的组合框。用户可以使用它来改变文本大小。

我还实现了插入符听众,它告诉我所选文本的大小并相应地更新组合框。现在,如果用户选择两种不同尺寸的文本,我想在Combobox中填充空白值。但我无法用Caret听众这样做,因为它给了我第一个文本的大小。

例如:如果我的文字是“HI”。这里的H大小为12,而我的大小为22.现在当我选择“HI”时,插入符号给我的值为12或22。

以下是示例代码:

StyledDocument doc = pane.getStyledDocument();
MutableAttributeSet fontSizeStyle = ((StyledEditorKit)pane.getEditorKit()).getInputAttributes();
int fontSize = StyleConstants.getFontSize(fontSizeStyle);

1 个答案:

答案 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++;
}