3

JavaFX では、TextArea などのテキスト コントロールで、マウス イベント座標から変換して、マウスの下にある文字の位置を正確に把握できるようにしたいと考えています。それを行う簡単な方法はありますか?

Swing では JTextArea.viewToModel を使用できますが、JavaFX ではまだ同等のものを見つけることができません。

具体的には、マウス イベントが発生するテキスト (行/列) 内の場所を見つけようとしています。それがサポートされているかどうかはわかりませんが、それが文字のどちら側で発生するかを知ることもいいでしょう。

別の言い方をすれば、マウスオーバーでキャラクターを飾りたいです。

4

2 に答える 2

2

私は答えを見つけました。これは:

TextArea text = ...
HitInfo hit = ((TextAreaSkin) text.getSkin()).getIndex(me);

はい、com.sun。**パッケージに含まれていますが、選択の余地はありません。オラクルがいつか同等のものを公開することを期待できます。

HitInfoのisLeadingは機能していないようです。常にtrueを返します。そして、挿入/文字インデックスは、あるべきではない場合でも常に同じです...しかし、少なくとも私は挿入/文字インデックスを取得できます。それらのバグを報告する必要があると思いますが、それらはパブリックAPIではないため、おそらく気にしないでしょう。

于 2012-08-23T21:38:27.217 に答える
0

おそらく、マウス イベントの座標は必要ありません。特定のマウス イベントによってカラット (または選択範囲) が移動することがわかっています。テキストエリア内でそれらのいずれかを聞いたら、テキストエリアにカラットが巻き上げられた場所を尋ねてください.

それが許容できる場合は、getAnchor()getCaretPosition()が必要なようです。

getCaretPosition() の javadoc から

テキスト内のキャレットの現在の位置。アンカーと caretPosition が選択範囲を構成します。

于 2012-08-23T18:33:26.127 に答える