0

JEdi​​torPaneを使用して、キャレットが現在最後の行にあるかどうかを確認する方法はありますか?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;
}

このコードは、下キーが押されるたびに実行され、行末となる最後の可能な位置の後にキャレットが置かれている場合にエラーが発生するかどうかを検出することにより、実際にテキストの終わりであるかどうかを返します。 (実際に最後の行である場合)それ以外の場合は、テキストの終わりに到達していないことを意味します。

4

2 に答える 2

1

テキストユーティリティを使用できるはずです。1つのメソッドは合計行を返し、別のメソッドはキャレットの行を返します。

JEdi​​torPaneのHTMLサポートが気に入らないので、これほど遊んだことはありません。また、editor.getDocument()。getLength()を使用して、キャレットがドキュメントの最後にあるかどうかを判断できる場合もあります。これは、HTMLではなくテキストのみを表示するJTextAreaまたはJTextPaneで機能します。JEdi​​torPaneでどのように機能するかわからない。

于 2010-11-09T02:33:49.400 に答える
0

おそらくもっと良い方法がありますが、これを試すことができます:

return editor.getText().indexOf("\n", editor.getCaretPosition()) == -1;
于 2010-11-08T22:20:21.530 に答える