为什么viewToModel返回最后一个char的位置,即使鼠标不在文本上?

时间:2012-12-31 14:05:26

标签: java swing jtextpane mouseclick-event

我有JTextPane并使用MouseAdapter我需要获取点击的字符的位置。当我直接点击字符时,使用viewToModel会返回想要的位置,但是,当我点击JTextPane的空白区域时,它会返回行中最后一个字符的位置。

当我不点击字符时,有谁知道如何避免获取最后一个字符的位置?

她是获得职位的代码:

public void mouseClicked(MouseEvent e) {
    JTextPane editor = (JTextPane) e.getSource();
    Point pt = new Point(e.getX(), e.getY());
    int pos = editor.viewToModel(pt);
}

1 个答案:

答案 0 :(得分:1)

点击空白区域时,您期望得到什么结果?实际上它返回最接近点击点的位置。

您可以从viewToModel()获取位置,并使用modelToView()传递获取的偏移量。然后只需将返回的矩形与点击的点进行比较。