测量2次按钮点击之间的时间。 (JAVA)

时间:2015-11-09 13:53:18

标签: java button time

我刚开始在学校学习Java。我们有一个练习,但我找不到答案。

我必须测量点击开始按钮和点击停止按钮之间的时间。这就是我到目前为止所做的。

import java.awt.Rectangle;

class Fitts {

public static Rectangle getLocatie(int vensterBreedte, int vensterHoogte) {
    // Declareer variabelen
    int breedte, hoogte, x, y;

    // Kies waarden voor variabelen
    breedte = 200;
    hoogte = 50;
    y = 500;
    x = 200;

    // Geef de grootte en locatie terug als een gecombineerde waarde
    return new Rectangle(x, y, breedte, hoogte);
}

public static long start() {
    long startTime;
    // Deze code wordt uitgevoerd als op de startknop wordt geklikt
    startTime = System.nanoTime();
    System.out.println("start tijd is: " + startTime);
    return startTime;

}

public static void stop() {
    long startTime, endTime, elapsedTime;
    // Deze code wordt uitgevoerd als op de doelknop wordt geklikt
    startTime = start (); 
    endTime = System.nanoTime();
    System.out.println("eind tijd is: " + endTime);
    elapsedTime = (endTime - startTime)/ 1000000000; 
    System.out.println ("De tijdsduur was " + elapsedTime + " milliseconden.");
    System.out.println();
   }   
}

我们也有这段代码,但我们不允许在此代码中更改任何内容:

public class FittsVenster extends JFrame implements ActionListener, ComponentListener {
private static final long serialVersionUID = 0;

// Configuratie
final static int WIDTH = 600;
final static int HEIGHT = 600;
final static int BUTTONWIDTH = 200;
final static int BUTTONHEIGHT = 40;

// De elementen in de GUI
private JButton btnStart, btnTarget;

/**
 * Constructor, wordt aangeroepen bij het maken van Main object
 */
public FittsVenster() {
    // Wat standaard eigenschappen
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setTitle("Wet van Fitts");
    setSize(WIDTH, HEIGHT);
    addComponentListener(this);

    // Maak een interface om de knoppen te kunnen plaatsen
    JPanel panel = new JPanel();
    getContentPane().add(panel);
    panel.setLayout(null);

    // Startknop, standaard zichtbaar
    btnStart = new JButton("Start");
    btnStart.addActionListener(this);
    btnStart.setBounds(0, 20, BUTTONWIDTH, BUTTONHEIGHT);
    panel.add(btnStart);

    // Doelknop, standaard onzichtbaar
    btnTarget = new JButton("Klik hier!");
    btnTarget.addActionListener(this);
    btnTarget.setVisible(false);
    panel.add(btnTarget);
}

/**
 * Methode die aangeroepen wordt bij een druk op een knop
 */
@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource() == btnStart) {
        btnTarget.setBounds(Fitts.getLocatie(getContentPane().getWidth(), getContentPane().getHeight()));
        Fitts.start();
        btnStart.setVisible(false);
        btnTarget.setVisible(true);
    } else if(e.getSource() == btnTarget) {
        Fitts.stop();
        btnStart.setVisible(true);
        btnTarget.setVisible(false);
    }
}


/**
 * De main methode om het venster te laten zien, details
 * over de implementatie zijn niet belangrijk.
 */
public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            FittsVenster ex = new FittsVenster();
            ex.setVisible(true);
        }
    });
}

/**
 * Wordt aangeroepen wanneer het venster van grootte verandert,
 * zorgt ervoor dat knoppen gecentreerd worden.
 */
@Override
public void componentResized(ComponentEvent e) {
    btnStart.setLocation(getContentPane().getWidth() / 2 - btnStart.getWidth() / 2,
            getContentPane().getHeight() / 2 - btnStart.getHeight() / 2);
}

/**
 * Wordt aangeroepen wanneer het venster getoond wordt,
 * zorgt ervoor dat we initieel de knoppen centreren.
 */
@Override
public void componentShown(ComponentEvent e) {
    this.componentResized(e);
}

// Ongebruikte events

@Override
public void componentHidden(ComponentEvent e) { }

@Override
public void componentMoved(ComponentEvent e) { }

}

1 个答案:

答案 0 :(得分:1)

这是一个班级:

public class TimerWatch {
    private long lastClick=0;

    public long tick() {
        long c = System.nanoTime();

        long result = c-lastClick;
        lastClick = c;

        return result;
    }
}

每次调用tick()方法时,它都会返回自之前调用以来经过的纳秒数。

建议:在你的代码中只使用一种语言......如果你真的想使用荷兰语,请坚持使用荷兰语,但不要混用。