我想打印两个按钮单击之间的时间(按钮和按钮)。这是我的代码的一部分(该代码不起作用,因为仅显示当前时间):

class ClicksReporter implements ActionListener {

  @Override
  public void actionPerformed(ActionEvent e) {
  long startTime = 0;
  long endTime = 0;

  if ( e.getActionCommand().equals("ButtonA") ) {
    System.out.println("ButtonA was clicked");
    startTime = System.currentTimeMillis()/1000;
  }

  if ( e.getActionCommand().equals("ButtonB") ) {
    System.out.println("ButtonB was clicked");
    endTime = System.currentTimeMillis()/1000 - startTime;
    System.out.println("Time: "+endTime);
  }
}

我该如何解决?

最佳答案

startTimeendTime是在方法返回后丢失的局部变量。因此,每次单击ButtonB时,startTime的值为零。您需要将开始时间设置为类的字段,因此,如下所示:

class ClicksReporter implements ActionListener {
  long startTime=0;
  @Override
  public void actionPerformed(ActionEvent e) {
  if ( e.getActionCommand().equals("ButtonA") ) {
    System.out.println("ButtonA was clicked");
    this.startTime = System.currentTimeMillis()/1000;
  }

  if ( e.getActionCommand().equals("ButtonB") ) {
    System.out.println("ButtonB was clicked");
    long endTime = System.currentTimeMillis()/1000 - startTime;
    System.out.println("Time: "+endTime);
  }
}


另外,请确保将ClicksReporter的相同实例设置为按钮A和B的动作侦听器。

关于java - 两次按钮单击之间的时间(Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26326671/

10-12 12:54
查看更多