Come convertire da una posizione del mouse per una posizione di carattere in un JEditorPane in Java Swing

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

Domanda

Al momento sto cercando di risolvere un problema in cui ho bisogno di trovare la posizione in un pezzo di testo in un JEditorPane in base a dove è stato cliccato il mouse.

In pratica, quando l'utente fa clic destro su una parola ho bisogno di sapere qual è la parola. Per fare questo ho bisogno di sapere quale posizione nel testo che l'utente ha cliccato. So che posso ottenere facilmente la posizione del mouse dal MouseEvent che viene passato al metodo mousePressed, e mi è stato detto che è possibile convertire questo per ottenere l'indice di carattere nella parte di testo - però io non riesco a capire come fare questo.

Ho provato il metodo viewToModel () su JEditorPane tuttavia questo mi sta dando di nuovo la posizione sbagliata nel testo quindi o lo sto usando sbagliato o che non funziona in questo modo.

Tutte le idee?

È stato utile?

Soluzione

Invocare viewToModel() è il modo corretto di fare questo:

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
}

Altri suggerimenti

Ho risolto questo problema da solo. Si scopre viewToModel () è esattamente quello che dovrebbe usare qui, il problema era che mi stava passando nel punto sbagliato ad esso.

Dal MouseEvent, stavo usando il metodo getLocationOnScreen () per elaborare il punto quando in realtà avrei dovuto usando il metodo GetPoint ().

Grazie a tutti coloro che hanno letto questa domanda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top