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

    Input da finestra

    Ciao a tutti, ho scritto un programma che data la mail e la password ritorna il numero di mail non lette ogni 5 minuti nella propria casella di posta.
    Funziona perfettamente attraverso un ciclo di questo tipo:

    codice:
    while(connected){
        if(inbox.getUnreadMessageCount() != 0)
             System.out.println("Unread messages: " + inbox.getUnreadMessageCount());
        else
             System.out.println("No new messages"); 
                    
        Thread.sleep(1000 * 60 * 5);
    }
    la variabile connected l'ho impostata a true per verificare la correttezza del programma.

    Ora vorrei realizzare la parte grafica, cioè 1 finestra con 2 campi, rispettivamente JTextField (Username) e JPasswordField (Password) e un pulsante (Connetti/Disconnetti).
    La mia intenzione era settare connected a false e attraverso un actionListener sul click del JButton portare connected a true e assegnare username e password per la connessione.
    Ma...mentre da terminale lo Scanner attende l'iserimento, qui il programma va avanti e trovando username e password a null da errore.

    Qualche consiglio?
    Grazie in anticipo...posto qui in basso qualche riga di codice

    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class GUI extends JFrame implements ActionListener{
        public Image icon = Toolkit.getDefaultToolkit().getImage("C:\\Users\\*****\\Documents\\NetBeansProjects\\MailNotifier\\icon.png");
        public JPanel panel;
        public JTextField user; 
        public JButton b;
        public JPasswordField pwd;
        public JLabel userlab; 
        public JLabel pwdlab;
        public JCheckBox check;
        public JLabel res;
    
        Connection aux = new Connection();
        
        public GUI(){
            setTitle("Mail Notifier");
            
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            
            setIconImage(icon);
            setSize(400, 350);
            setLocation((screenSize.width / 2) - (getWidth() / 2), (screenSize.height / 2) - (getHeight() / 2));
            setResizable(false);
            
            panel = new JPanel();
            panel.setLayout(null);
            
            Insets insets = panel.getInsets();
    
            userlab = new JLabel("Username");
            Dimension userlabsize = userlab.getPreferredSize();
            userlab.setBounds(25 + insets.left, 25 + insets.top, userlabsize.width, userlabsize.height);
            panel.add(userlab);
            
            user = new JTextField(30);
            Dimension usersize = user.getPreferredSize();
            user.setBounds(25 + insets.left, 50 + insets.top, usersize.width, usersize.height);
            panel.add(user);
            
            pwdlab = new JLabel("Password");
            Dimension pwdlabsize = pwdlab.getPreferredSize();
            pwdlab.setBounds(25 + insets.left, 100 + insets.top, pwdlabsize.width, pwdlabsize.height);
            panel.add(pwdlab);
            
            pwd = new JPasswordField(30);
            Dimension pwdsize = pwd.getPreferredSize();
            pwd.setBounds(25 + insets.left, 125 + insets.top, pwdsize.width, pwdsize.height);
            panel.add(pwd);
            
            check = new JCheckBox("Show password field");
            Dimension checksize = check.getPreferredSize();
            check.setBounds(22 + insets.left, 150 + insets.top, checksize.width, checksize.height);
            panel.add(check);
            
            b = new JButton("Connect");
            Dimension bsize = b.getPreferredSize();
            b.setBounds(200 + insets.left - bsize.width, 200 + insets.top, bsize.width * 2, bsize.height);
            panel.add(b);
            
            res = new JLabel("Unread messages: " /*+*/ );
            Dimension ressize = res.getPreferredSize();
            res.setBounds(200 + insets.left - ressize.width / 2, 250 + insets.top, ressize.width, ressize.height);
            panel.add(res);
            
            check.addActionListener(this);
            b.addActionListener(this);
            
            this.getContentPane().add(panel);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            setVisible(true);
        }
       
        @Override
        public void actionPerformed(ActionEvent ae){
            if(ae.getSource() == check){
                if(check.isSelected())
                    pwd.setEchoChar((char) 0); 
                else
                    pwd.setEchoChar('•');
            }
            else if(ae.getSource() == b){ 
                    aux.username = user.getText();
                    aux.password = String.valueOf(pwd.getPassword()); 
                    b.setText("Disconnect");
                    aux.connected = true;
            }
        }
    }
    e
    codice:
    import java.util.*;
    import javax.mail.*;
    
    public class Connection{
        public Folder inbox;
        public String username;
        public String password;
        public boolean connected = false;
        
        public Connection(){
            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", username, password);
    
                inbox = store.getFolder("Inbox");
                
                while(connected){
                    if(inbox.getUnreadMessageCount() != 0)
                        System.out.println("Unread messages: " + inbox.getUnreadMessageCount());
                    else
                       System.out.println("No new messages"); 
                    
                    Thread.sleep(1000 * 60 * 5);
                }
            }
            catch(MessagingException e){
                System.out.println("Error1");
            }
            catch(InterruptedException e){
                System.out.println("Error2");
            }
        }
    }

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

    Moderazione

    Il linguaggio usato va obbligatoriamente specificato nel titolo.
    Qui si tratta di Java, che oltretutto ha un forum dedicato.

    Aggiungo il linguaggio e sposto la discussione nel forum Java. Im futuro, poni qui le domande relative a tale 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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.