Java 按Enter键使用Utilities.getRowStart时出现BadLocationException

Java 按Enter键使用Utilities.getRowStart时出现BadLocationException,java,swing,jtextpane,Java,Swing,Jtextpane,我正在使用Utilities.getRowStart查找JTextPane中的行数。但当我按enter键时,它会给出BadLocationException: javax.swing.text.BadLocationException:位置不由表示 看法 有什么想法吗 int offset = pane.getText().length(); while(offset > 0) { try { offset = Utilities.getRowStart(pane,

我正在使用
Utilities.getRowStart
查找
JTextPane
中的行数。但当我按enter键时,它会给出
BadLocationException

javax.swing.text.BadLocationException:位置不由表示 看法

有什么想法吗

int offset = pane.getText().length();

while(offset > 0) {

    try {

    offset = Utilities.getRowStart(pane, offset) - 1;

        } catch (BadLocationException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();

    }
    lineCount++;
}
只是猜测您正在使用Windows。该代码将为每个换行符返回一个包含“\r\n”的字符串。文档仅使用“\n”,因此偏移量将大于文档的长度。使用:

int offset = pane.getDocument().getLength();
只是猜测您正在使用Windows。该代码将为每个换行符返回一个包含“\r\n”的字符串。文档仅使用“\n”,因此偏移量将大于文档的长度。使用:

int offset = pane.getDocument().getLength();

在你的问题中添加一些代码请找到一些代码实际上你需要发布一个
SSCCE
来演示你的问题。如果你不知道什么是
SSCCE
,那么你可以在网上搜索。在你的问题中添加一些代码请查找一些代码实际上你需要发布
SSCCE
来演示你的问题。如果你不知道什么是
SSCCE
,那么你可以在网上搜索。谢谢Camickr。它现在运行良好,是的,我正在使用Windows。@ USE1815809考虑投票,并接受这个答案hereThanks Camickr。它现在运行良好,是的,我正在使用Windows。@