簡體   English   中英

測量兩次單擊之間的時間。 (Java)

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

我剛剛在學校開始使用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) { }

}

這是一堂課:

public class TimerWatch {
    private long lastClick=0;

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

        long result = c-lastClick;
        lastClick = c;

        return result;
    }
}

每次調用tick()方法時,它都會返回自上次調用以來已過去的納秒數。

並建議:在代碼中僅使用一種語言...如果您真的想使用荷蘭語,請始終使用它,但不要混淆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM