1

2 つのボタンの GUI を表示するコードがいくつかあります。目標は、1 つのボタンを 2 回押して、ボタンのクリックの間にかかった時間をミリ秒単位で表示することです。

私の問題は、時間が常に0であることですが、何か提案はありますか? また、ボタン a とボタン b のクリック間の時間を取得する方法も実装したいと考えています。任意のヒント?ありがとう。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ButtonViewer 
{
    static int countA = 0;
    static int countB = 0;
public static void main( String[] args ) 
{
JFrame frame = new JFrame();
GridLayout layout = new GridLayout(2,2);
frame.setLayout(layout);
JButton buttonA = new JButton("Button A");
frame.add(buttonA);

class ClickListenerOne implements ActionListener 
{
    public void actionPerformed( ActionEvent event ) 
    {
        countA++;
        long StartA = System.currentTimeMillis();

        if (countA % 2 == 0)
        {
             long EndA = System.currentTimeMillis();
             long differenceA = (EndA - StartA);
             System.out.println(differenceA + " Elapsed");  
        }

    }
}

JButton buttonB = new JButton("Button B");
frame.add(buttonB);

class ClickListenerTwo implements ActionListener 
{
    public void actionPerformed( ActionEvent event ) 
    {
        countB++;
        long StartB = System.currentTimeMillis();
        if (countB % 2 == 0)
        {
             long EndB = System.currentTimeMillis();
             long differenceB = (EndB - StartB);
             System.out.println(differenceB + " Elapsed");  
        }
    }
}

ActionListener mButtonAClicked = new ClickListenerOne();
buttonA.addActionListener(mButtonAClicked);

ActionListener mButtonBClicked = new ClickListenerTwo();
buttonB.addActionListener(mButtonBClicked);

frame.setSize( 200, 200 );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible(true);
}
}
4

3 に答える 3

0

あなたのコードで:

class ClickListenerOne implements ActionListener {
 // int startA; ?
public void actionPerformed( ActionEvent event ) 
{
    countA++;
    long StartA = System.currentTimeMillis();  // you are reading  time 
                              //after mouse click event

    if (countA % 2 == 0)
    {
         long EndA = System.currentTimeMillis(); // variable name should not be 
                              //declared with capital letter
         long differenceA = (EndA - StartA);
         System.out.println(differenceA + " Elapsed");// then you are computing 
                                 //elapsed time in the same click event 
         // startA = endA; // updated the time after each event?
    }

}}

この方法では、後続のマウス クリック イベントの間に時間が経過しません。startTimeアイデアは、クラスの減速のメンバーとして宣言することです。行っているように経過時間を計算し、startTimeに設定して を更新しendTimeます。

于 2013-10-14T17:23:08.613 に答える