E ai galera blz?
Estou desenvolvendo um projeto em Java para fins de aprendizado, e me deparei com um pequeno problema. No meu projeto, existe um Frame que seria usado para enviar algum possível bug no programa, até ai tudo bem, já desenvolvi a parte que envia o email. Mas queria que enquanto o email estivese sendo enviado, fosse apresentada uma label com uma mensagem ex: Enviando mensagem Aguarde… e logo em seguida a mensagem da a label seria atualizada com outra mensagem ex: Mensagem enviada com Sucesso.. Assim o usuário não ficaria aguardando sem saber o que aconteceu.
Porém a label está sendo atualizada apenas após o envio do email, mais enquanto está sendo enviado não consigo setar uma mensagem para a label. O que está me deixando ainda com mas intrigado é que se dou um System.out.println o código roda certinho, e quando seto a mensagem para a label, parece apenas ignorar a linha do código.
Segue um print do meu Frame.
Segue o evento do botão enviar.
Segue o código do botão Enviar Email
private void jbt_EnviarEmailActionPerformed(java.awt.event.ActionEvent evt) {
try {
jlb_teste.setText("Enviando Aguarde...");
System.out.println("Enviando Aguarde...1");
EnviarEmail();
} catch (IOException ex) {
Logger.getLogger(JD_EnviarEmail.class.getName()).log(Level.SEVERE, null, ex);
}
}
Segue o Método EnviarEmail.
private void EnviarEmail() throws IOException {
System.out.println("COMEÇANDO A ENVIAR");
jlb_teste.setText("Enviando Aguarde...2");
System.out.println("Enviando Aguarde...2");
try {
jlb_teste.setText("Enviando Aguarde...3");
System.out.println("Enviando Aguarde...3");
MultiPartEmail emailss = new MultiPartEmail();
emailss.setDebug(true);
jlb_teste.setText("Enviando Aguarde...4");
System.out.println("Enviando Aguarde...4");
emailss.setHostName("smtp.gmail.com");
emailss.setAuthentication("testeestoquex@gmail.com", "testeestoque");
emailss.setSmtpPort(465);
emailss.setSSL(true);
emailss.addBcc("testeestoquex@gmail.com");
emailss.addBcc(jtf_contato.getText());
emailss.setFrom("testeestoquex@gmail.com", "EstoqueF");
emailss.setSubject(jtf_assunto.getText());
emailss.setMsg(jta_mensagem.getText() + "\n\nEmail para Contato: " + jtf_contato.getText());
if (!attachment.getName().equals("")) {
emailss.attach(attachment); //anexo
}
emailss.send();
jlb_teste.setText("Email enviado com sucesso.");//Apenas aqui ele seta a mensagem para a label
System.out.println("Email enviado com sucesso.");
} catch (EmailException e) {
JOptionPane.showMessageDialog(null, "Impossivel enviar email, verifique sua conexão com a Internet e Tente novamente");
}
}
O nome da label onde estou tentando setar as mensagem é jlb_teste.
Fiz algumas pesquisas e acho que uma Thread resolveria meu problema.
Olhei alguns matérias sobre threads, aparentemente é algo simples, mas não consegui implementar em meu código. Se alguém poder me ajudar a resolver o problema, fico grato
OBS: não precisa ser necessariamente com Threads, citei esse exemplo, pois apos
minha pesquisa, acho que o problema se resolveria com ela.