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

Java 为什么viewToModel返回最后一个字符的位置,即使鼠标不在文本上?,java,swing,jtextpane,mouseclick-event,Java,Swing,Jtextpane,Mouseclick Event,我有一个JTextPane,使用MouseAdapter我需要得到点击的字符的位置。当我直接单击字符时,使用viewToModel确实会返回所需的位置,但是,当我单击JTextPane的空白区域时,它会返回行中最后一个字符的位置 有人知道当我不点击字符时如何避免得到最后一个字符的位置吗 这是获得职位的代码: public void mouseClicked(MouseEvent e) { JTextPane editor = (JTextPane) e.getSource();

我有一个
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);
}

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


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

不明白,您可以检查插入符号(当我不单击字符时,避免获取最后一个字符的位置?)possition@mKorbel是的,插入符号位于viewToModel返回的位置。显然,当我点击文本时,我不需要它。@Igor whats Rectangle,只有selection可以返回它,真的发布一篇关于它的SSCE,以避免误读……没关系,我找到了另一个解决方法。因为我用它来识别我使用的超链接
Element el=doc.getCharacterElement(pos)
获取元素并检查其是否具有蓝色前景属性。谢谢你们。