Salve, vorrei creare un cronometro in java con un minimo di grafica base (Start,Stop).
Online ho trovato questo codice, perfettamente funzionante ma il problema è che è in centesimi, mentre ho bisogno anche dei Millesimi, ma non lo riesco a modificare.. qualcuno mi puo dare un consiglio anche adottando un'altra strada?
codice:
package Programma;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
/**
* Creo il cronometro
*
*/
public class Cronometro {
private JFrame frame;
private JLabel labelTime;
private JPanel panelButtons;
private JButton buttonStart;
private JButton buttonStop;
private Timer timer;
private long startTime;
/**
* Avvia il cronometro
*/
public void avviaCronometro(){
frame = new JFrame("Cronometro");
frame.setBounds(600, 270, 300, 140);
// frame.setResizable(false);
labelTime = new JLabel("0:00:00.0");
labelTime.setFont (new Font("SansSerif", Font.BOLD, 50));
labelTime.setHorizontalAlignment(JLabel.CENTER);
buttonStart = new JButton("Start");
buttonStop = new JButton("Stop");
buttonStop.setEnabled(false);
panelButtons = new JPanel(new GridLayout(1, 2));
panelButtons.add(buttonStart);
panelButtons.add(buttonStop);
frame.add(labelTime, BorderLayout.CENTER);
frame.add(panelButtons, BorderLayout.SOUTH);
timer = new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent e) {
long diffTime = System.currentTimeMillis() - startTime;
int decSeconds = (int)(diffTime % 1000 / 100);
int seconds = (int)(diffTime / 1000 % 60);
int minutes = (int)(diffTime / 60000 % 60);
int hours = (int)(diffTime / 3600000);
String s = String.format("%d:%02d:%02d.%d", hours, minutes, seconds, decSeconds);
labelTime.setText(s);
}
});
buttonStart.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
startTime = System.currentTimeMillis();
timer.start();
buttonStart.setEnabled(false);
buttonStop.setEnabled(true);
}
});
buttonStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
timer.stop();
buttonStart.setEnabled(true);
buttonStop.setEnabled(false);
}
});
frame.setVisible (true);
}
public static void main (String[] args) {
SwingUtilities.invokeLater(new Runnable () {
public void run() {
new Cronometro().avviaCronometro();
}
});
}
}