首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行JavaMail时所有JFrame冻结

执行JavaMail时所有JFrame冻结
EN

Stack Overflow用户
提问于 2013-07-13 12:54:56
回答 1查看 356关注 0票数 2

我开发了车辆管理系统的程序。然后我想在车进车出的时候给这家公司的老板发邮件。我的代码可以成功地发送邮件,但我注意到当邮件发送时,其他JFrame窗口被冻结(我无法在所有JFrame窗口上执行任何操作),直到邮件发送完成。这对于Javamail来说是正常的吗?还是有一种方法可以让其他JFrame仍然工作?

在我的程序中,完成发送一封邮件大约需要10秒。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-13 12:58:12

当你执行繁重的任务时,你应该在另一个线程中运行它们,而不是在与gui相同的线程中。如果你在Event Dispatch Thread中运行,那么图形用户界面将会冻结,直到完成。

你可以在这里使用SwingWorker,这是一个我非常喜欢Swing Worker Example的例子

示例:

代码语言:javascript
复制
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);
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17627104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档