我正在编写一个语法突出显示的编辑器。我想要做的是获取当前行,然后解析它而不是整个文档。问题是我可能做错了,但我不知道为什么。 下面是我在做什么:在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
的understaing是我能得到的只是我想行(孩子),比工作之上,但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
“错”是什么意思?您是否考虑过可能会打包的行,即“行”可能会覆盖文本面板中的多个“行”?您能否清楚说明您对代码的期望? – Howard 2011-04-02 09:46:57
它如何失败? – sarnold 2011-04-02 09:50:10
我编辑我的问题 – dierre 2011-04-02 10:04:29