<AI>
JavaFXの TextArea でカーソルを先頭に移動し、かつスクロール位置も先頭にリセットするには、
positionCaret(0) と setScrollTop(Double.MIN_VALUE) を併用します。
java
textArea.positionCaret(0); // カーソルを先頭に移動
textArea.setScrollTop(Double.MIN_VALUE); // スクロールを先頭に位置させる
具体的な使用手順は以下の通りです。
基本的な実装例
文字を入力した後や、別の処理の後にカーソルとスクロールを先頭に戻したい場合は、以下のようにメソッドを順に呼び出します。
java
// テキストを設定
textArea.setText("先頭に戻るテスト文字列です...");
// カーソルを先頭(0文字目)に持ってくる
textArea.positionCaret(0);
// スクロールを先頭(最小値)に位置させる
textArea.setScrollTop(Double.MIN_VALUE);
注意点・TIPS
もし setText() の直後にこれらのメソッドを実行しても上手くスクロールしない場合は、画面の描画(CSSの適用など)とタイミングが合っていない可能性があります。
その場合は、Platform.runLater() を使って処理を少し遅らせると確実に動作します。
java
Platform.runLater(() -> {
textArea.positionCaret(0);
textArea.setScrollTop(Double.MIN_VALUE);
});
この操作に関する詳細なAPI仕様については、OracleのTextArea公式ドキュメント を参照してください