Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Ottenere da posizione cursore riga intera da jtextarea

    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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ottenere da posizione cursore riga intera da jtextarea

    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
    Si può fare ma richiede alcuni passaggi.

    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.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    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

  4. #4
    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)

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Tsirhcitna
    int caretPosition=jta.getCaretPosition();
    Ma tu avevi detto "la riga in cui si è fatto il click destro" e io questo ho descritto.
    Ma è una cosa diversa dal partire con la posizione del caret.

    La prossima volta precisa e chiarisci meglio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Sì concettualmente avevo pensato che il click avvenisse nella stessa riga dove era posizionato il cursore in effetti è meglio ottenere la riga su cui si fa il click destro

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Tsirhcitna
    Sì concettualmente avevo pensato che il click avvenisse nella stessa riga dove era posizionato il cursore in 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 ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.