|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Java Tempo
come posso fare una specie di cronometro dove i numeri cambiano ogni secondo graficamente in JavaSwing?
Ultima modifica di Pro7on : 13-06-2007 alle 09:00. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Requisiti: Java 5 o superiore. Codice:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Cronometro { private JFrame frame; private JLabel labelTime; private JPanel panelButtons; private JButton buttonStart; private JButton buttonStop; private Timer timer; private long startTime; public Cronometro () { frame = new JFrame ("Cronometro"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.setSize (220, 140); labelTime = new JLabel (); labelTime.setFont (new Font ("SansSerif", Font.BOLD, 30)); labelTime.setHorizontalAlignment (JLabel.CENTER); labelTime.setText ("0:00:00.0"); 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 (50, 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 (); } }); } }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 13-06-2007 alle 11:30. |
|
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
![]() Ps.: Pare Key Horstmann si sia accorto ieri dell'esistenza della norma del thread singolo in Swing http://weblogs.java.net/blog/cayhors...ngle_thre.html Mica male, considerato che lui è uno degli esperti...
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Più che altro per essere abbastanza sicuro che ogni decimo di secondo venga visualizzato.
Come si sa i timer, gestiti in un sistema ad eventi ... non è detto che siano precisi precisi. Supponiamo di usare 100 e che l'ultimo timer abbia causato la visualizzazione del decimo di secondo '6' e che magari ci mancava pochissimo al passaggio al '7'. Ora immaginiamo che il timer si "rilassi" un pochino. È possibile che il '7' non venga visualizzato ma venga visualizzato '8' al prossimo evento del timer. Si può anche mettere 100, eh! Non è mica il cronometro che usano alla NASA! ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#8 | |
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:33.