按钮ActionEvent同时发送电子邮件和显示加载屏幕

时间:2017-10-18 15:07:18

标签: java jframe

目前我正在用java编写一个小工具。我遇到的问题如下: 当我按下按钮时,应该有两件事同时开始。

  1. 启动IconImage(gif)加载图片
  2. 发送附件附件的电子邮件(使用此code
  3. 我目前有以下代码,它可以完美地发送电子邮件,但没有可见的图像。我也尝试启动一个新的Thread但是从SendEmail类中得到了很多例外。有什么建议吗?

    validationQuery, testOnCreate, testOnBorrow, testOnReturn, testWhileIdle
    

    更新

    似乎有订单。首先发送电子邮件,然后即使我 btnWeiter4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { URL loader = KeyLogger.class.getResource("/ajax-loader.gif"); JLabel loading = new JLabel("loading ...\r\n"); loading.setIcon(new ImageIcon(loader)); loading.setVisible(true); // show loading image loading.setBounds(1087, 599, 121, 45); panel_4.add(loading); SendEmail email = new SendEmail(); email.send(); // sends email } }); 一开始就显示我的加载图像。

    解决方案:

    我使用匿名内部类来创建新线程以发送电子邮件,我将setVisible(true)移到了file.delete();类中。适合我的工作

    SendEmail

1 个答案:

答案 0 :(得分:0)

我认为问题是setIcon方法需要String而不是URL,请尝试这样做。

更新现在,您可以查看代码执行的确切时间

    btnWeiter4.addActionListener(new ActionListener() {
              @Override
              public void actionPerformed(ActionEvent arg0) {


                JLabel loading = new JLabel("loading ...\r\n");
                loading.setBounds(1087, 599, 121, 45);
                loading.setIcon(new ImageIcon("ajax-loader.gif")); // Check whether the gif file is really in the root folder 
                loading.setVisible(true); // show loading image
        String currentTime    = String.valueOf(System.currentTimeMillis());
System.out.println("Im done with JPanel " + currentTime);
                panel_4.add(loading);               

                SendEmail email = new SendEmail();
                email.send();   // sends email
    String currentTime2    = String.valueOf(System.currentTimeMillis());
System.out.println("Im done with Email sending " + currentTime2);

              }
          });