Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142

    [JAVA] Codice Selezione riga eseguito due volte con click mouse

    Per una jTable utilizzo un Listener che gestisce l'evento di selezione riga.

    Il metodo:

    codice:
    public void valueChanged(ListSelectionEvent e) {  
    
    }
    viene eseguito 2 volte quando utilizzo il mouse per cambiare riga!

    Analizzando il problema utilizzando il seguente codice nel metodo valueChanged:

    codice:
    if (e.getValueIsAdjusting()) {
        System.err.println("MOUSE PREMUTO");
    }
            
    if(!e.getValueIsAdjusting()) {
     // CON LA TASTIERA ENTRA SOLO IN QUESTO
        System.err.println("MOUSE RILASCIATO o TASTIERA");
    }
    ho capito che il problema è dovuto al fatto che ogni click è visto come 2 cambiamenti, una quando il mouse viene premuta ed un'altra quando viene rilasciato, mentre con la tastiera se ne ha uno soltanto.

    Dato che alla selezione segue un caricamento di un'immagine in un jPanel vorrei evitare questo comportamento!

    Secondo voi come faccio ad evitare che in caso di uso del mouse venga interpretato solo il ckick e non il rilascio?

    Grazie mille per ogni suggerimento

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

    Re: [JAVA] Codice Selezione riga eseguito due volte con click mouse

    Originariamente inviato da som
    ho capito che il problema è dovuto al fatto che ogni click è visto come 2 cambiamenti, una quando il mouse viene premuta ed un'altra quando viene rilasciato, mentre con la tastiera se ne ha uno soltanto.
    L'avevo spiegato qui (in quella discussione si parlava di JList ma il concetto non cambia, il listener è lo stesso).

    Originariamente inviato da som
    Dato che alla selezione segue un caricamento di un'immagine in un jPanel vorrei evitare questo comportamento!
    Il comportamente è quello .... getValueIsAdjusting ti dice semplicemente se si è in una fase di più eventi per cui la selezione può ancora cambiare o se invece è definitiva. Tutto qui.

    Originariamente inviato da som
    Secondo voi come faccio ad evitare che in caso di uso del mouse venga interpretato solo il ckick e non il rilascio?
    Dipende da cosa vuoi fare alla sola "pressione". Puoi anche usare un MouseListener ma poi devi fare del lavoro in più perché dalle coordinate x/y devi determinare la riga e/o colonna in base a cosa vuoi fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Grazie mille andbin.

    Ho risolto memorizzando il nome dell'immagine da caricare alla pressione del mouse e quello al rilascio, se sono uguali non faccio ricaricare.

    Infatti la tabella in questione la popolo scegliendo delle opzioni da un combo box, quindi a volte serve che aggiorni il pannello al rilascio del click del mouse.

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.