Как преобразовать из позиции мыши в позицию символа в JEditorPane в Java Swing

В настоящее время я пытаюсь решить проблему, в которой мне нужно найти позицию в фрагменте текста в JEditorPane, основываясь на том, где была нажата мышь.

По сути, когда пользователь щелкает правой кнопкой мыши слово, мне нужно выяснить, что это за слово. Для этого мне нужно выяснить, на какую позицию в тексте нажал пользователь. Я знаю, что могу легко получить положение мыши из MouseEvent, которое передается в метод mousePressed, и мне сказали, что вы можете преобразовать это, чтобы получить индекс символа в фрагменте текста - однако я не могу понять, как это сделать этот.

Я пробовал метод viewToModel() на JEditorPane, однако это возвращает меня к неправильной позиции в тексте, поэтому либо я использую его неправильно, либо он не работает таким образом.

Есть идеи?

2 ответа

Решение

Вызов 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
}

Я решил эту проблему самостоятельно. Оказывается, viewToModel() - это именно то, что я должен использовать здесь, проблема заключалась в том, что я передал неправильную точку к нему.

В MouseEvent я использовал метод getLocationOnScreen(), чтобы определить, когда на самом деле мне следовало использовать метод getPoint().

Спасибо всем, кто прочитал этот вопрос.

Другие вопросы по тегам