Actuellement, j'écris un petit outil avec Java. Le problème que j'ai est le suivant: Quand j'appuie sur un bouton, deux choses doivent commencer simultanément.Bouton ActionEvent envoyer un e-mail et afficher l'écran de chargement simultanément
- Démarrer une iconImage image chargement (gif)
- Envoyer un e-mail avec pièce jointe (utilisé cette code)
J'ai actuellement le code suivant, qui envoie l'e-mail parfaitement, mais il n'y a pas d'image visible. J'ai également essayé de démarrer un nouveau thread mais j'ai reçu beaucoup d'exceptions de la classe SendEmail. Aucune suggestion?
btnWeiter4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
URL loader = KeyLogger.class.getResource("/ajax-loader.gif");
JLabel loading = new JLabel("loading ...\r\n");
loading.setIcon(new ImageIcon(loader));
loading.setVisible(true); // show loading image
loading.setBounds(1087, 599, 121, 45);
panel_4.add(loading);
SendEmail email = new SendEmail();
email.send(); // sends email
}
});
Mise à jour:
Il semble qu'il y ait un ordre. D'abord l'email est envoyé et après que mon image de chargement est montrée même si je setVisible(true)
au tout début.
Solution:
je classe interne anonyme pour créer un nouveau fil pour envoyer des e-mail et je me suis déplacé le file.delete();
intérieur SendEmail
classe. Fonctionne très bien pour moi
new Thread() {
public void run() {
SendEmail email = new SendEmail();
email.send(); // sends email
}
}.start();
voir post updatet. – WirJun
Je ne pense pas que l'e-mail est envoyé avant d'afficher le Jlabel, le code ActionEvent sera exécuté de haut en bas, comment mesurez-vous le temps d'envoi d'e-mail? –
Parce que le bouton est gelé pendant une courte période de temps 1-2 secondes et après que l'image est visible – WirJun