有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

点击按钮上的java JProgressBar可在发送电子邮件时显示进度

我正在用swing程序发送邮件。我想在点击发送邮件的按钮时显示进度条。当所有电子邮件发送完毕后,进度条将达到100%完成。但在邮件发送时,progrssbar不会显示任何内容

private void btnSendEmailsNowActionPerformed(java.awt.event.ActionEvent evt) {                                                        
    btnSendEmailsNow.setEnabled(false);
    Task task = new Task();
    task.start();
    //Load property files
    loadProps();
    //Read config file.
    readConfig();
    //Take filename "FromEmail_list" after reading config file. 
    BufferedReader br1=null;
    BufferedReader br2=null;
    String line1="",line2="";
    String csvSplitBy=",";
    String strMailFrom="",strPassword="";
    String strSendTo="";
    int countCSVFrom=0,countCSVSendTo;
    System.out.println("strCSVFrom=" + strCSVFrom + ", strcsvSendTo=" + strCSVSendTo);
    try{
      br1=new BufferedReader(new FileReader(strCSVFrom));
      br2=new BufferedReader(new FileReader(strCSVSendTo));
      while((line1=br1.readLine())!=null){
          countCSVFrom+=1;
          String[] strarrFromEmail = line1.split(csvSplitBy);
          strMailFrom=strarrFromEmail[0];
          strPassword=strarrFromEmail[1];  
          System.out.println("strFrom="+strMailFrom + ", strPassword="+strPassword);
          countCSVSendTo=0;
          while((line2=br2.readLine())!=null){
             System.out.println("line2="+line2.toString());
             countCSVSendTo+=1;
             String[] strMailTo=line2.split("\n");
             strSendTo=strMailTo[0];
              String subject = "Test mail"; 
              String message="";

              //inline image
              Map<String,String> inlineImage=new HashMap<String,String>();
              inlineImage.put("image1", "Logo.jpg");

              frmEmailer mailer = new frmEmailer();
              String filename=txtHTMLFile.getText(); 
              System.out.println("filename=" + filename);        
              try{
                 message=mailer.readHTML(filename,message);
                 mailer.sendHtmlEmail(strhost, strport, strMailFrom, strPassword, strSendTo,
                                     subject, message,inlineImage);
                 System.out.println("Email sent successfully.");

                 Random rand = new Random();
                 int randomNum = rand.nextInt((8 - 3) + 1) + 3;

                 System.out.println(randomNum);

                 Thread.sleep(randomNum*1000); //1000 microseconds = 1 seconds. 

                  if(countCSVSendTo==2){
                     break;       
                  }
              }catch (Exception ex) {
                  System.out.println("Failed to sent email.");
                  ex.printStackTrace();
              }
            }

      //System.out.println("countcsvfrom="+countCSVFrom + ", line1=" + line1.toString());

      System.out.println("countcsvsendto="+countCSVSendTo);
      }
      JOptionPane.showMessageDialog(null, "Emails sent successfully!");
      btnSendEmailsNow.setEnabled(true);
    }catch(FileNotFoundException fnfe){
          fnfe.printStackTrace();
          JOptionPane.showMessageDialog(null, "Failed to send Email!");
    }catch(IOException ioe ){
        JOptionPane.showMessageDialog(null, "Failed to send Email!");
        ioe.printStackTrace();
    }
}    
private class Task extends Thread {    
  public Task(){
  }

  public void run(){
     for(int i =0; i<= 100; i+=10){
        final int progress = i;
        SwingUtilities.invokeLater(new Runnable() {
           public void run() {
              progressbar.setValue(progress);
           }
        });
        try {
           Thread.sleep(100);
        } catch (InterruptedException e) {}
     }
  }
}    

共 (0) 个答案