Cómo convertir de una posición del ratón a una posición de carácter en un JEditorPane en Java Swing

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

Pregunta

Actualmente estoy tratando de resolver un problema por el que tengo que encontrar la posición de un fragmento de texto en un JEditorPane según el lugar donde se hizo clic en el ratón.

Básicamente, cuando los usuario hace clic más de una palabra de lo que necesitan para averiguar cuál es la palabra. Para ello necesito para saber qué posición en el texto que el usuario ha hecho clic en. Sé que puedo conseguir fácilmente la posición del ratón de la MouseEvent que se pasa al método mousePressed, y me han dicho que puede convertir esto para obtener el índice de caracteres en el fragmento de texto - sin embargo no puedo encontrar la manera de hacer esto.

He probado el método viewToModel () en JEditorPane sin embargo, esto me está dando vuelta la posición incorrecta en el texto así que o lo estoy usando mal o no funciona de esta manera.

¿Alguna idea?

¿Fue útil?

Solución

La invocación de viewToModel() es la forma correcta de hacer esto:

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
}

Otros consejos

He resuelto este problema por mi cuenta. Resulta viewToModel () es exactamente lo que debería usar aquí, el problema fue que yo estaba pasando en el punto equivocado a la misma.

Desde el MouseEvent, que estaba usando el método getLocationOnScreen () para calcular el punto cuando en realidad debería haber estado usando el método GetPoint ().

Gracias a cualquier persona que lea esta pregunta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top