[英]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.