我正在通过Herbert Schidlt的“The Complete Reference”学习java。 在这本书中,我们建议如果你的任何一部分GUI需要做一件可能需要更长时间的事件,那么我们应该把它作为一个新的Thread来实现。如何在JButton上运行线程?
所以,我做了一个GUI来发送邮件到我的收件箱,它工作正常,但它需要2-3秒发送邮件,因此发送按钮也需要一些时间来恢复到正常状态(它保持按下直到监听者回应,如在监听器中,我已经实现了发送邮件的代码)。
为了避免这种情况,我试图在这个“发送”按钮上运行一个线程,这样当按下按钮时,将生成一个mouseEvent,该mouseEvent上的&,我想运行该线程,以便监听器立即回应,邮件通过线程发送。
我该如何实施此方案?我尝试在MouseEvent中实现新的Runnable作为内部类,但是我不知道如何调用启动方法!
代码很大,所以我只在这里放置它的“发送按钮”代码。
sendButton.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
String id=emailIdField.getText();
String subject=subjectField.getText();
String body=mailBodyArea.getText();
String user= "[email protected]";
String pass="password";
String host="smtp.gmail.com";
sendEmail= new SendEmail(); // class which actually sends the mail. defined in other file.
sendEmail.sendMail(id, user, subject ,body ,host, user, pass);
}
});
我想运行这个MouseClicked函数中的代码作为一个新的线程。我到目前为止所尝试的是,
sendButton.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
new Runnable(){
public void run(){
String id=emailIdField.getText();
String subject=subjectField.getText();
String body=mailBodyArea.getText();
System.out.println(id);
System.out.println(subject);
System.out.println(body);
String user= "[email protected]";
String pass="impe(*&amit";
String host="smtp.gmail.com";
sendEmail= new SendEmail();
sendEmail.sendMail(id, user, subject ,body ,host, user, pass);
}
};
});
但现在我不知道我该如何调用此线程的启动方法?请指教。
线程t =新主题(可运行); t.start(); – rkosegi
@rkosegi我在哪里写这句话? –