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)
获取元素并检查其是否具有蓝色前景属性。谢谢你们。