<AI>
JavaFXの WebView で「カーソル(キャレット)位置」および「その行の文字列」を取得する場合、
Javaのコード単体では行えません。
WebView 内部のHTMLDOMやJavaScriptエンジンを利用してカーソル位置(または選択範囲)の情報を計算し、
それを executeScript() でJava側に取得する必要があります。

以下に具体的な手順と実装例を記載します。

実装ステップ
1. カーソル行のテキストを取得するJavaScript

HTML/DOM要素(contenteditable のついた要素やテキストノード)内のカーソル位置を取得し、
現在カーソルのある行全体のテキストを抽出するJavaScript関数を executeScript で実行します。

java
// WebEngineの取得
WebEngine webEngine = webView.getEngine();

// JavaScriptを実行して結果を取得
String jsCode = 
    "var selection = window.getSelection();" +
    "if (selection.rangeCount > 0) {" +
    "    var range = selection.getRangeAt(0);" +
    "    var node = range.startContainer;" +
    "    if (node.nodeType === 3) {" + // Textノードの場合
    "        var text = node.textContent;" +
    "        // 改行を基準にしてカーソル位置の行を特定するなどの処理" +
    "        var offset = range.startOffset;" +
    "        /* ここで offset を元に行全体の文字列を取り出す処理を書く */" +
    "        /* 単純にノード全体のテキストを返す場合は text; とする */" +
    "        text;" +
    "    } else {" +
    "        \"\";" +
    "    }" +
    "} else {" +
    "    \"\";" +
    "}";

String currentLineString = (String) webEngine.executeScript(jsCode);
System.out.println("現在の行のテキスト: " + currentLineString);

2. 注意点と代替案
WebView の仕様上、ブラウザ側でキャレットがどのような Range になっているかは、
対象が input / textarea なのか、または通常の div ( contenteditable ) なのかによって処理が大きく異なります。

より簡単にカーソル位置や行単位の文字列を確実に取得したい場合は、以下の代替手法がよく利用されます。

RichTextFX の利用
もしリッチテキストエディタのような機能を作成したい場合、標準の WebView ではなく、
JavaFX専用に作られた高度なテキストエリアコンポーネントである RichTextFX を使用すると、
 getCaretPosition() や offsetToPosition() などのAPIが標準で備わっているため、行や列の取得が非常に容易になります。

Ace Editor や Monaco Editor の組み込み
WebViewを利用し続ける場合、
Ace Editor や VS Code のエディタ部分である Monaco Editor のようなリッチなJavaScriptエディタをWebView内にロードし、
そのエディタが提供する強力なAPI( getSelectionRange() など)を executeScript で呼び出す方法が最も確実でバグが出にくいアプローチです