Ciao a tutti, ho realizzato un programma con interfaccia grafica che dati in input email e password "dovrebbe" restituire in continuazione il numero di mail non lette. Premetto che è il mio primo progetto in cui uso anche un po' di grafica.

Ho solo 2 enormi problemi: quando premo il pulsante Connect mi parte la connessione e non riesco a interromperla, il ciclo prende il sopravvento su tutto, il programma tuttavia funziona perché a terminale vedo il numero di messaggi non letti, ma non mi va a modificare la Label destinata a visualizzare il risultato

Posto qui sotto il codice dell'actionPerformed:
codice:
@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource() == check){
        if(check.isSelected())
            pass.setEchoChar((char) 0); 
        else
            pass.setEchoChar('•');
    }
    //CONTROLLO SUL PULSANTE CONNECT/DISCONNECT
    else if(e.getSource() == b){
        if(b.getText().compareTo("Connect") == 0){
            connected = true;
            b.setText("Disconnect"); //NON CAMBIA IL TESTO DEL PULSANTE (se il codice sotto viene eseguito, non dovrebbe eseguire anche questa linea?)
                
            Properties props = System.getProperties();
            props.setProperty("mail.store.protocol", "imaps");
        
            try{
                Session session = Session.getDefaultInstance(props, null);
                Store store = session.getStore("imaps");

                store.connect("imap.gmail.com", user.getText(), String.valueOf(pass.getPassword()));

                inbox = store.getFolder("Inbox");
            
                //CICLO CHE NO TERMINA
                while(connected){
                    if(inbox.getUnreadMessageCount() != 0){
                        res.setText("Unread messages: " + inbox.getUnreadMessageCount()); //NON MODIFICA LA LABEL RES
                        System.out.println("Unread messages: " + inbox.getUnreadMessageCount());
                    }
                    else{
                         res.setText("No new messages"); //NON MODIFICA LA LABEL RES
                         System.out.println("No new messages");
                    } 
                
                    Thread.sleep(1000 * 15);
                }
            }
            catch(MessagingException ex){
                System.out.println("Error1");
            }
            catch(InterruptedException ex){
                System.out.println("Error2");
            }
        }
        else if(b.getText().compareTo("Disconnect") == 0){ //IL PULSANTE RESTA SEMPRE PREMUTO
            connected = false;
            b.setText("Connect");
            System.out.println("Lost connection");
        }
    }    
}
Ringrazio in anticipo!!!