Я пишу редактор с подсветкой синтаксиса. Я хочу получить текущую строку и просто проанализировать ее вместо всего документа. Проблема в том, что я, вероятно, делаю это неправильно, но я не знаю почему.
Вот что я делаю:
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()
дает мне длину всего документа. Что я делаю не так?
edit # 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