JEditorPaneを使用して、キャレットが現在最後の行にあるかどうかを確認する方法はありますか?API、さらに重要なことにJEditorPaneの派生元であるJTextComponentには何も見つかりません。ユーザーが下矢印キーを使用してテキストを下に移動するときに、これを見つける必要があります。私の現在の考えはこれです:
private boolean isEndOfText() {
int tmpCurrent = editor.getCaretPosition();
editor.getActionMap().get(DefaultEditorKit.endLineAction).actionPerformed(null);
int tmpEnd = editor.getCaretPosition();
try { editor.setCaretPosition(tmpEnd + 1); } catch (Exception e) { editor.setCaretPosition(tmpCurrent); return true; }
editor.setCaretPosition(tmpCurrent);
return false;
}
このコードは、下キーが押されるたびに実行され、行末となる最後の可能な位置の後にキャレットが置かれている場合にエラーが発生するかどうかを検出することにより、実際にテキストの終わりであるかどうかを返します。 (実際に最後の行である場合)それ以外の場合は、テキストの終わりに到達していないことを意味します。