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

StackOverflow https://stackoverflow.com/questions/1180390

Вопрос

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

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

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

Есть какие-нибудь идеи?

Это было полезно?

Решение

Вызывающий 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().

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top