我想打印两个按钮单击之间的时间(按钮和按钮)。这是我的代码的一部分(该代码不起作用,因为仅显示当前时间):
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);
}
}
我该如何解决?
最佳答案
startTime
和endTime
是在方法返回后丢失的局部变量。因此,每次单击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/