Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Shmoo
    Registrato dal
    Jun 2010
    Messaggi
    13

    [JAVA] Problema JButton

    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!!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Sposto nel forum corretto: Java.
    In futuro, posta qui le domande relative a questo linguaggio.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ti consiglio di leggerti SwingInvoker, il fatto che non aggiorni la label probabilmente deriva dal fatot che ci sono 2 thread che lavorano insieme

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.