The timer is not working perfectly. it gives a very off estimate of the elapsedtime each time.
Please Help
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class JumpingPanel extends JFrame{
public static final int BUTTON_WIDTH = 45;
public static final int BUTTON_HEIGHT = 45;
static int n=0;
private static final Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
private JPanel middle;
private TargetPanel target;
private static void resizeComponent(Component c) {
Dimension d = c.getSize(null);
c.setPreferredSize(new Dimension((int)(0.9*d.width), (int)(0.9*d.height)));
}
private static class TargetPanel extends JPanel implements ActionListener{
private JButton theMainButton;
private Random rand;
public void actionPerformed(ActionEvent ae) {
JButton source = (JButton)ae.getSource();
float elapsedTimeMillis = 0;
double elapsedTimesec1;
if (source == theMainButton) {
resizeComponent(this);
setLocation(rand.nextInt(screenSize.width-3*BUTTON_WIDTH),
rand.nextInt(screenSize.height-3*BUTTON_HEIGHT));
long start = System.currentTimeMillis(); // get the starting milli-seconds
n++;
if(n>=3){
JOptionPane.showMessageDialog(null, "You Clicked it " +n);
long elapsedTimeSec = System.currentTimeMillis(); // get the stoping milli-seconds,
elapsedTimesec1 =(double)(elapsedTimeSec - start)/100.0; // calculate the lasting time in seconds.
JOptionPane.showMessageDialog(null, "Took you: " + elapsedTimesec1 + " seconds."); // showing the result.
}
validate();
}
}
public TargetPanel() {
rand = new Random();
setLayout(new GridLayout(3,3));
for (int r = 0; r < 3; r++) {
for (int c = 0; c < 3; c++) {
JButton button = new JButton();
if (r == 1 && c == 1) {
theMainButton = button;
theMainButton.addActionListener(this);
}
button.setPreferredSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT));
add(button);
}
}
setMaximumSize(new Dimension(3*BUTTON_WIDTH,3*BUTTON_HEIGHT));
Border border = BorderFactory.createLineBorder(Color.BLACK, 4);
setBorder(border);
}
}
public static void main(String[] args) {
JumpingPanel frame = new JumpingPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("The Clicking Game");
frame.setMinimumSize(screenSize);
frame.middle = (JPanel)frame.getContentPane();
frame.middle.setLayout(new FlowLayout());
frame.target = new TargetPanel();
frame.middle.add(frame.target);
frame.setVisible(true);
}
}