我刚开始在学校学习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) { }
}
答案 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()
方法时,它都会返回自之前调用以来经过的纳秒数。
建议:在你的代码中只使用一种语言......如果你真的想使用荷兰语,请坚持使用荷兰语,但不要混用。