我开发汽车管理系统的程序。然后,我想在汽车进来并开车时向该公司的所有者发送邮件。 我的代码可以成功发送邮件,但我注意到,在发送邮件时,其他JFrame窗口冻结(我无法对所有JFrame窗口执行任何操作)直到邮件发送完成。 这是通常的Javamail或有办法让其他JFrame仍然工作?所有JFrame冻结的同时做JavaMail
在我的程序中,大约需要10秒钟才能完成发送一封邮件。
我开发汽车管理系统的程序。然后,我想在汽车进来并开车时向该公司的所有者发送邮件。 我的代码可以成功发送邮件,但我注意到,在发送邮件时,其他JFrame窗口冻结(我无法对所有JFrame窗口执行任何操作)直到邮件发送完成。 这是通常的Javamail或有办法让其他JFrame仍然工作?所有JFrame冻结的同时做JavaMail
在我的程序中,大约需要10秒钟才能完成发送一封邮件。
当你执行繁重的任务时,你应该在另一个线程中运行它们,而不是像gui一样。如果你运行在Event Dispatch Thread那么gui会冻结,直到完成。
你可以在这里使用SwingWorker是一个例子,我真的很喜欢Swing Worker Example
例子:
class Worker extends SwingWorker<String, Object> {
@Override
protected String doInBackground() throws Exception {
//here you send the mail
return "DONE";
}
@Override
protected void done() {
super.done();
//this is executed in the EDT
JOptionPane.showMessageDialog(null, "Message sent", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
+1好(编辑&)答案。 –
谢谢!我也用你提供的链接阅读你的代码,它的工作。 – user2549814
你必须使用另一个线程 – nachokk
你需要发送只有一个e-mail或多少?如果您需要发送一些电子邮件,您可能应该显示一些进度条或电子邮件的结果。 – Thorn