我正在编写一个带有语法突出显示的编辑器。我想要做的是获取当前行并解析它而不是整个文档。问题是我可能做错了,但我不知道为什么。这就是我正在做的事情:
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