Java 如何识别JTextPane中所选文本的大小是否不同?

Java 如何识别JTextPane中所选文本的大小是否不同?,java,swing,jtextpane,Java,Swing,Jtextpane,我正在开发一个编辑器,其中有一个字体大小的组合框。用户可以使用它来改变文本大小 我还实现了插入符号侦听器,它告诉我所选文本的大小,并相应地更新组合框。现在,如果用户选择两种不同大小的文本,我想在Combobox中填充空白值。但我无法用插入符号监听器做到这一点,因为它给了我第一个文本的大小 如果我的短信是“嗨”。这里H是12号的,我是22号的。现在,当我选择“HI”插入符号时,listener会给我12或22的值 以下是示例代码: StyledDocument doc = pane.getStyl

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

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

如果我的短信是“嗨”。这里H是12号的,我是22号的。现在,当我选择“HI”插入符号时,listener会给我12或22的值

以下是示例代码:

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

下面的代码将在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++;
}
String selectedText=pane.getSelectedText();
int k=pane.getSelectionStart();
对于(int i=0;i
因此您需要编写一个循环,循环遍历所选文本的所有字符。如果所有尺寸相同,则显示该尺寸。一旦你发现一个不同的尺寸,你就停止循环并显示空白。嗨,我是Swing的新手。所以我需要你的帮助。我可以通过使用pane.getSelectedText()获取所选文本,并对其进行迭代以获取每个字符,但如何确定其大小?好的,我现在找到了解决方案。将其发布到+1下面,但您应该使用getSelectionStart()/getSelectionEnd()作为我忘记添加1行的子项。现在将答案修改为精确答案,无需使用k++。它应该是k=doc.getCharacterElement(k).getEndOffset(),并且应该检查k是否大于选择值