Se ho una jtextarea con più righe di testo vorrei sapere come ottenere la riga in cui si è fatto il click destro (per fare apparire un jpopupmenu) per poterla passare ad un listener
Se ho una jtextarea con più righe di testo vorrei sapere come ottenere la riga in cui si è fatto il click destro (per fare apparire un jpopupmenu) per poterla passare ad un listener
Si può fare ma richiede alcuni passaggi.Originariamente inviato da Tsirhcitna
Se ho una jtextarea con più righe di testo vorrei sapere come ottenere la riga in cui si è fatto il click destro (per fare apparire un jpopupmenu) per poterla passare ad un listener
1) Dal MouseEvent si ottiene il Point (getPoint()) del punto cliccato.
2) Si invoca sulla textarea il viewToModel(Point pt) (questo metodo lo eredita da JTextComponent) che restituisce l'offset "lineare" all'interno del document.
3) Si invoca getLineOfOffset(int offset) di JTextArea passando l'offset e si ottiene la riga.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Grazie del suggrimento, spulciando in giro ho scoperto come ottenere il numero di riga
jta è la jtextarea
int caretPosition=jta.getCaretPosition();
int row = root.getElementIndex(caretPosition);
e stampandolo a video ho visto che è corretto, ma ancora non so bene come ottenere il testo della riga
Ecco ho notato di aver specificato male non voglio il numero della riga ma voglio il testo contenuto nella riga
il passo successivo che ho trovato è il metodo getText(int offset,int length)
da dare sul document della jtextarea, quindi devo solo trovare la lunghezza della riga
Ho risolto, per chi fosse interessato il metodo
jta.getText(jta.getLineStartOffset(row), jta.getLineEndOffset(row)-jta.getLineStartOffset(row))
ritorna il testo della riga row (e lancia una eccezione da gestire riguardante un numero di riga errato)
Ma tu avevi detto "la riga in cui si è fatto il click destro" e io questo ho descritto.Originariamente inviato da Tsirhcitna
int caretPosition=jta.getCaretPosition();
Ma è una cosa diversa dal partire con la posizione del caret.
La prossima volta precisa e chiarisci meglio.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Sì concettualmente avevo pensato che il click avvenisse nella stessa riga dove era posizionato il cursorein effetti è meglio ottenere la riga su cui si fa il click destro
Boh .. fai tu. Io ho risposto per quello che si poteva capire dalla richiesta ...... quando leggo discussioni del genere mi verrebbe voglia di lasciar perdere il forum ...Originariamente inviato da Tsirhcitna
Sì concettualmente avevo pensato che il click avvenisse nella stessa riga dove era posizionato il cursorein effetti è meglio ottenere la riga su cui si fa il click destro
![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet