Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果某个操作没有在周期内发生,则定期执行任务_Java_Time_Scheduled Tasks_Timertask - Fatal编程技术网

Java 如果某个操作没有在周期内发生,则定期执行任务

Java 如果某个操作没有在周期内发生,则定期执行任务,java,time,scheduled-tasks,timertask,Java,Time,Scheduled Tasks,Timertask,我有这个程序来生成一个随机验证码 我想做的就是这样 生成代码后,如果未在文本字段中输入该代码并在一分钟内提交,则应生成新代码 如何在Java中实现这一点?我现有的代码发布在下面 import java.awt.*; import javax.swing.*; import java.security.*; import java.awt.event.*; import java.io.FileInputStream; import java.io.UnsupportedEncodingExcep

我有这个程序来生成一个随机验证码

我想做的就是这样

生成代码后,如果未在文本字段中输入该代码并在一分钟内提交,则应生成新代码

如何在Java中实现这一点?我现有的代码发布在下面

import java.awt.*;
import javax.swing.*;
import java.security.*;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Verification extends JFrame implements ActionListener { // Start main class

JPanel p;
JTextField t;
JLabel l, l1;
JButton b;

public Verification() { // Start constructor
super("Verification");
p = new JPanel();
add(p);
p.setLayout(null);
p.setBackground(Color.pink);
l = new JLabel("Enter Code");
l.setBounds(20, 50, 100, 20);
l.setFont(new Font("arial", Font.BOLD, 15));
p.add(l);
l1 = new JLabel("");
l1.setBounds(50, 110, 200, 40);
l1.setFont(new Font("arial", Font.BOLD, 20));
p.add(l1);
t = new JTextField();
t.setBounds(110, 50, 250, 20);
p.add(t);
b = new JButton("Login");
b.setBounds(370, 50, 100, 20);
p.add(b);
b.addActionListener(this);
setSize(500, 190);
setVisible(true);
setLocation(400, 200);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} // End constructor

public void RSA() { //Start RSA
  byte[] n = {6, 1, 3, 4, 8, 9, 0, 5, 11, 24, 12, 57, 12, 78};
  for (int i = 0; i < n.length; i++) { // Start for
    n[i] = (byte) (Math.random() * 80);
    System.out.print(n[i]);
  } // End for
  System.out.println("\n");
} // End RSA

public static String MD5(String input) { // Start MD5
 byte[] n = {6, 1, 3, 4, 8, 9, 0, 5, 11, 24, 12, 57, 12, 78};
 try { // Start try1
    for (int i = 0; i < n.length; i++) { // Start for
        n[i] = (byte) (Math.random() * 80);
        System.out.print(n[i]);
    } // End for
    n = input.getBytes("UTF-8");
  } // End try1
  catch (UnsupportedEncodingException e) {
    n = input.getBytes();
  }

  String result = null;
  char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
      '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  try { // Start try2
      MessageDigest md = MessageDigest.getInstance("MD5");
      md.update(n);
      byte temp[] = md.digest();
      char str[] = new char[16 * 2];
      int k = 0;
      for (int i = 0; i < 16; i++) { // Start for
        byte byte0 = temp[i];
        str[k++] = hexDigits[byte0 >>> 4 & 0xf];
        str[k++] = hexDigits[byte0 & 0xf];
     } // End for
      result = new String(str);
   } // End try2
  catch (Exception e) {
    e.printStackTrace();
   }
   return result;
 } // End MD5

 public void actionPerformed(ActionEvent e) { // Start actionPerformed
  } // End actionPerformed

public static void main(String[] args) { // Start main method
  Verification a = new Verification();
  System.out.println("The RSA Code is : \n");
  a.RSA();
  System.out.println("The MD5 on RSA Code is : \n");
  System.out.println(MD5("Javarmi.com"));
 } // End main method
} // End main class
import java.awt.*;
导入javax.swing.*;
导入java.security.*;
导入java.awt.event.*;
导入java.io.FileInputStream;
导入java.io.UnsupportedEncodingException;
导入java.math.biginger;
导入java.security.MessageDigest;
导入java.security.NoSuchAlgorithmException;
公共类验证扩展JFrame实现ActionListener{//Start主类
JPanel p;
jtextfieldt;
JLabel,l1;
按钮b;
公共验证(){//启动构造函数
超级(“验证”);
p=新的JPanel();
加(p);
p、 setLayout(空);
p、 挫折背景(颜色:粉红色);
l=新的JLabel(“输入代码”);
l、 立根(20,50,100,20);
l、 setFont(新字体(“arial”,Font.BOLD,15));
p、 加(l);
l1=新的JLabel(“”);
l1.立根(50、110、200、40);
l1.setFont(新字体(“arial”,Font.BOLD,20));
p、 添加(l1);
t=新的JTextField();
t、 立根(110,50,250,20);
p、 加(t);
b=新的JButton(“登录”);
b、 立根(370,50,100,20);
p、 添加(b);
b、 addActionListener(此);
设置大小(500190);
setVisible(真);
设置位置(400200);
可设置大小(假);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}//结束构造函数
public void RSA(){//Start RSA
字节[]n={6,1,3,4,8,9,0,5,11,24,12,57,12,78};
for(int i=0;i>>4&0xf];
str[k++]=hexDigits[byte0&0xf];
}//结束
结果=新字符串(str);
}//结束try2
捕获(例外e){
e、 printStackTrace();
}
返回结果;
}//结束MD5
public void actionPerformed(ActionEvent e){//Start actionPerformed
}//结束已执行的操作
公共静态void main(字符串[]args){//Start main方法
验证a=新验证();
System.out.println(“RSA代码是:\n”);
a、 RSA();
System.out.println(“RSA代码上的MD5是:\n”);
println(MD5(“Javarmi.com”);
}//结束主方法
}//结束主类
使用a定期执行任务:

private Timer timer;
private String code;
public static void main(String[] args) { // Start main method
    final Verification a = new Verification();

    a.timer = new Timer(
        60 * 1000,
        new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                System.out.println("The RSA Code is : \n");
                a.RSA();
                a.code = MD5("Javarmi.com");
                System.out.println("The MD5 on RSA Code is : \n");
                System.out.println(a.code);
            }
        }
    );
    a.timer.setInitialDelay(0);
    a.timer.start();
} // End main method

可以在
actionPerformed(ActionEvent)
方法中执行验证

您确实需要更详细地解释应用程序堆栈。没有足够的细节来提供全面的响应。谢谢你,但我不明白你编写的代码是如何工作的。请你详细解释一下。
Timer
实例将每60秒执行一次ActionListener代码。这将负责重置
code
成员变量。在这种情况下,
code
会不断重置为相同的值,但这是另一个问题。您的
actionPerformed(ActionEvent)
方法应将
t.getText()
code
进行比较,并根据需要调用
timer.stop()
。感谢您的澄清:)