1

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

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

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

这是示例代码:

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

1 回答 1

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++;
}
于 2013-03-30T07:37:59.957 回答