構文を強調表示するエディターを作成しています。私がやりたいことは、現在の行を取得し、ドキュメント全体ではなくそれを解析することです。問題は、おそらく私が間違っていることですが、その理由はわかりません。これが私がやっていることです:
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