在JTextPane中逐行读取文本

我正在编写一个语法高亮的编辑器。我想要做的是获取当前行并解析它而不是整个文档。问题是我可能做错了但我不知道为什么。 这是我正在做的事情:
public void keyReleased(KeyEvent e) {
    System.out.println(e);
    try {
    int inizio = Utilities.getRowStart(ta, ta.getCaretPosition());
    int fine = Utilities.getRowEnd(ta, ta.getCaretPosition());
    System.out.println("Inizio: " + inizio + " - Fine: " + fine);
    Element root = ta.getDocument().getDefaultRootElement();
    if(inizio == fine) System.out.println("Mi trovo ad inizio riga");
    else {
        int linea = RXTextUtilities.getLineAtCaret(ta);
        System.out.println("Linea: " + linea);
        Element child = root.getElement(linea-1);
        System.out.println("Testo corrente: " + child.getDocument().getLength() );
    }
    } catch (BadLocationException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
我对使用
javax.swing.text.Element
的理解是,我可以得到我想要的那条线(孩子)而不是工作,但是
child.getDocument.getLength()
给了我整个文件的长度。我究竟做错了什么? 编辑#1:
child.getDocument.getLength()
给出了文档开头的长度,我期望当前的行长度。请参阅:我使用
int linea = RXTextUtilities.getLineAtCaret(ta);
得到了我的行号,而不是使用root.getElement(linea-1)提取行,所以我希望
child.getDocument().getLength()
会给出当前行的长度。 RXTextUtilities链接:http://www.camick.com/java/source/RXTextUtilities.java     
已邀请:
对于您的特定情况,您将获得整个文档的长度,因为
child.getDocument()
实际上返回嵌入子项的文档。 您可以使用
child.getStartOffset()
child.getEndOffset()
确定文档中的开始和结束,然后从整个文档中剪切出文本。
int start = child.getStartOffset();
int end = child.getEndOffset();
int length = end - start;
String text = child.getDocument().getText(start, length);
请注意,文本还包含EOL分隔符。     

要回复问题请先登录注册