两次单击按钮之间的时间(Java)

两次单击按钮之间的时间(Java),java,button,time,Java,Button,Time,我想打印两次按钮点击之间的时间(ButtonA和ButtonB)。这是我代码的一部分(由于只打印当前时间,因此无法工作): 如何解决此问题?startTime和endTime是局部变量,一旦方法返回,这些变量就会丢失。因此,每次单击按钮b,开始时间的值都为零。您需要将开始时间改为类的一个字段。因此,如下所示: class ClicksReporter implements ActionListener { long startTime=0; @Override public void

我想打印两次按钮点击之间的时间(ButtonA和ButtonB)。这是我代码的一部分(由于只打印当前时间,因此无法工作):


如何解决此问题?

startTime
endTime
是局部变量,一旦方法返回,这些变量就会丢失。因此,每次单击
按钮b
,开始时间的值都为零。您需要将开始时间改为类的一个字段。因此,如下所示:

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);    
  }
}
另外,确保按钮A和按钮B的动作侦听器都设置了相同的
ClicksReporter
实例

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);    
  }
}