【发布时间】:2011-07-25 16:00:38
【问题描述】:
我有这个发送电子邮件的程序。我想知道是否可以使用progress bar 来改善用户界面。我想要的是在遇到transport.send() 语句后进度条应该相应地进行。有没有办法让我知道进度。
所发生的事情是,当用户按下send 时,会启动一个发送电子邮件的新线程。单击发送后的响应很差,因为用户不知道他的操作是否正在被监听。(尽管它正在收听!) 半分钟后,他收到JOptionPane,表示是的,消息已发送。您将同意每个人都渴望知道他的操作是否正在处理。
有什么办法可以让我使用进度条。(即我如何知道我的电子邮件程序的进度)
如果我不能使用JProgressBar,我可以用什么方法告诉用户他的命令正在处理中,他不用担心。
顺便说一句,这是负责发送电子邮件的部分。
try {
message.setFrom( new InternetAddress(from));
message.setRecipients(MimeMessage.RecipientType.TO , InternetAddress.parse(to) );
message.setSubject(subject);
message.setText(emailMessage);
attachment.setDataHandler( new DataHandler( fds ) );
attachment.setFileName( fileName );
messagePart.setText( emailMessage );
Multipart gmailMP = new MimeMultipart();
gmailMP.addBodyPart(attachment);
gmailMP.addBodyPart( messagePart );
message.setContent( gmailMP );
Transport transport = session.getTransport("smtp");
transport.send(message); // LINE THAT SENDS EMAIL
transport.close();
JOptionPane.showMessageDialog(new JFrame() , "Message sent!");
} catch(Exception exc) {
JOptionPane.showMessageDialog( new JFrame() , exc );
}
在注释行之后,接下来的 2 个语句需要一些时间才能执行。在这之间,我希望用户知道他的操作正在处理中
我该怎么做?
【问题讨论】:
标签: java swing jakarta-mail jprogressbar