对于JavaFX的文本控件,JTextArea.viewToModel的等价物是什么?

时间:2012-08-16 14:09:04

标签: java javafx

在JavaFX中,在某些文本控件(如TextArea或类似文件)中,我希望能够从鼠标事件坐标转换为确切知道鼠标下的哪个字符位置。是否有一些直截了当的方法呢?

在Swing中,你可以使用JTextArea.viewToModel,但我还没有找到JavaFX中的等价物。

具体来说,我试图找到鼠标事件发生的文本(行/列)中的位置。知道它出现在哪一侧的char也会很好,但我不知道是否支持它。

换句话说,我想在鼠标上装饰角色。

2 个答案:

答案 0 :(得分:2)

我找到了答案。它是:

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

是的,它在com.sun。**包中,但我没有选择。我希望甲骨文总有一天会公开相同的。

isLeading on HitInfo似乎不起作用:它总是返回true。并且insert / char索引总是相同的,即使它们不应该......但是,至少我可以获得insert / char索引。我想我应该报告这些事情的错误,但因为它们不是公共API,所以他们可能不会关心。

答案 1 :(得分:0)

也许鼠标事件的坐标不是必需的。您知道某些鼠标事件会移动克拉(或选择)。当你在textarea里面听到其中一个时,只要问textarea克拉就在哪里。

如果可以接受,那么getAnchor()getCaretPosition()似乎就是你想要的。

来自getCaretPosition()的javadoc

  

文本中插入符号的当前位置。锚和   caretPosition构成了选择范围。