在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
没有找到相关结果
已邀请:
1 个回复
莽缓逢
实际上返回嵌入子项的文档。 您可以使用
和
确定文档中的开始和结束,然后从整个文档中剪切出文本。
请注意,文本还包含EOL分隔符。