<AI>
WebView内のカーソル位置(行・列)を取得するには、
Java側からJavaScriptを実行してカーソル位置の文字オフセット(文字数)を取得し、文字列を改行で分割して計算します。

実装手順
executeScript でオフセットを取得する
getSelection() から現在位置のインデックスを取得します。

改行位置から行と列を計算する
取得したオフセットまでの文字列を \n で分割することで、行数と列数を算出します。

サンプルコード(Java)

java
// WebViewのWebEngineを取得
WebEngine engine = webView.getEngine();

// JSを実行してカーソル位置(開始位置)の文字オフセットを取得
Object result = engine.executeScript(
    "var selection = window.getSelection();" +
    "if (selection.rangeCount > 0) {" +
    "    var range = selection.getRangeAt(0);" +
    "    var preRange = range.cloneRange();" +
    "    preRange.selectNodeContents(document.body);" +
    "    preRange.setEnd(range.endContainer, range.endOffset);" +
    "    preRange.toString().length;" +
    "} else { 0; }"
);

int cursorOffset = ((Number) result).intValue();

// エディタ(または body)の全テキストを取得
String fullText = (String) engine.executeScript("document.body.innerText;");

// オフセット位置までのテキストを抽出
String textBeforeCursor = fullText.substring(0, cursorOffset);

// 改行で分割して行と列を計算
String[] lines = textBeforeCursor.split("\\n", -1);
int row = lines.length; // 行番号(1始まり)
int col = lines[lines.length - 1].length() + 1; // 列番号(1始まり)

System.out.println("行: " + row + ", 列: " + col);

※ 上記コードは contenteditable 属性が付与されたタグ内や、
通常のHTML入力欄でのテキスト選択状態に対応する汎用的なアプローチです。
対象が特定の