代码之家  ›  专栏  ›  技术社区  ›  Scottm

如何在JavaSwing中从JEditorPane中的鼠标位置转换为角色位置

  •  6
  • Scottm  · 技术社区  · 15 年前

    基本上,当用户右键点击一个单词时,我需要找出这个单词是什么。为此,我需要找出用户在文本中单击的位置。我知道我可以很容易地从MouseEvent中获得鼠标位置,它被传递到mousePressed方法中,我被告知可以将其转换为文本中的字符索引,但是我不知道如何做到这一点。

    有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  9
  •   ChssPly76    15 年前

    viewToModel()

    public void mouseClicked(MouseEvent e) {
        JEditorPane editor = (JEditorPane) e.getSource();
        Point pt = new Point(e.getX(), e.getY());
        int pos = editor.viewToModel(pt);
        // whatever you need to do here
    }
    
        2
  •  0
  •   Scottm    15 年前

    我自己解决了这个问题。事实证明,viewToModel()正是我应该在这里使用的,问题是我将错误的点传递给它。

    在MouseEvent中,我使用了getLocationOnScreen()方法来计算该点,而实际上我应该使用getPoint()方法。

    感谢所有读过这个问题的人。