加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在执行JavaMail时,所有JFrame都会冻结

发布时间:2020-12-15 07:37:05 所属栏目:Java 来源:网络整理
导读:我开发汽车管理系统的程序.然后,当汽车进来和开车时,我想发送邮件给这家公司的老板. ?我的代码可以成功发送邮件,但我注意到,当邮件发送完成时,其他JFrame窗口会冻结(我无法在所有JFrame窗口上执行任何操作). ?这通常适用于 Javamail还是有办法使其他JFrame仍
我开发汽车管理系统的程序.然后,当汽车进来和开车时,我想发送邮件给这家公司的老板.
?我的代码可以成功发送邮件,但我注意到,当邮件发送完成时,其他JFrame窗口会冻结(我无法在所有JFrame窗口上执行任何操作).
?这通常适用于 Javamail还是有办法使其他JFrame仍然有效?

在我的程序中,完成发送一封邮件大约需要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);
? ? }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读