I develop program of car management system. Then I want to send mail to owner of this company when car coming in and car out. My code can send mail successfully but I notice that while mail send, other JFrame window is freeze (I can't do anything on all JFrame window) until mail send is complete. Is this normally for Javamail or there is a way to make other JFrame still working?
In my program, it take about 10 seconds to complete send one mail.
When you do heavy task you should run them in another threads rather in the same as gui. If you run in Event Dispatch Thread then the gui is gonna freeze until finish.
You can use SwingWorker here is an example i really like Swing Worker Example
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);
}
}
来源:https://stackoverflow.com/questions/17627104/all-jframe-freeze-while-do-javamail