简体   繁体   English

测量两次单击之间的时间。 (Java)

[英]Measure time between 2 button clicks. (Java)

I've just started with Java at school. 我刚刚在学校开始使用Java。 We've got an exercise, but I can't find the answer. 我们进行了练习,但是我找不到答案。

I have to measure the time between a click on the start button and a click on the stop button. 我必须测量单击开始按钮和单击停止按钮之间的时间。 This is what i've got so far. 这就是我到目前为止所得到的。

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

We've also got this code, but we are not allowed to change anything in this code: 我们也有以下代码,但不允许更改此代码中的任何内容:

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

}

Here is a class: 这是一堂课:

public class TimerWatch {
    private long lastClick=0;

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

        long result = c-lastClick;
        lastClick = c;

        return result;
    }
}

Each time you invoke the tick() method, it will return the number of nanoseconds elapsed since it was invoked previously. 每次调用tick()方法时,它都会返回自上次调用以来已过去的纳秒数。

And an advise: stick to just one language in your code... If you really want to use Dutch, use it consistently, but don't mix. 并建议:在代码中仅使用一种语言...如果您真的想使用荷兰语,请始终使用它,但不要混淆。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM