Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331

    cronometro

    Salve a tutti,
    ho l'esigenza di creare un cronometro in java ho trovato già esempi per il funzionamento ma quello che volevo sapere è come far comparire il cronometro!
    grazie
    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    28
    Non so se ho ben capito, però potresti disegnarti anche una semplice stringa che mostra il tempo rimanente: la stringa è aggiornata da un thread che è attivato ad esempio ogni secondo utilizzando uno
    Swing Timer.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    In effetti la tua richiesta non è molto chiara...
    Se va bene la soluzione che ti ha fornito signal ok, altrimenti cerca di spiegarti meglio.


    PS: Ti consiglio anche di leggere il regolamento per quanto riguarda la struttura dei titoli delle discussioni. Questo lo aggiusto io


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    si scusa, quello che voglio sapere cosa devo fare per far comparire un croometro!

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da xedy
    si scusa, quello che voglio sapere cosa devo fare per far comparire un croometro!
    Allora... un cronometro è un thread che conta il passare del tempo. Un thread non ha nessuna rappresentazione grafica.

    Quello che puoi fare tu è decidere come visualizzare le informazioni del cronometro: puoi stamparle a video sottoforma di stringhe, puoi far apparire delle immagini ad ogni tic del cronometro, oppure, se è come penso io, ti devi studiare a fonto la libreria Swing per poter disegnare un quadrante con una lancetta.

    Hai parecchie scelte di fronte a te... se ti interessa la terza, dovrai prendere mano ai libri, perchè in una discussione su questo forum non sarebbe possibile trattare tutto l'argomento.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    no quello che mi interessa è un cronometro in formato digitale....quindi con numeri....grazie

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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 ("0:00:00.0");
            labelTime.setFont (new Font ("SansSerif", Font.BOLD, 30));
            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 (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, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    il codice da te postatomi è perfetto lo so che è passato un pò di tempo ma avrei la necessità di far partire il cronometro no da click sul pulsante ma quando confronto una stringa proveniente da db con una tipo start solo che non so quale parte di codice modificare per farla funzionare.
    grazie
    ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    ho risolto, ma ora ho un altro problema. Ho messo due cronometri creando anche due diversi timer e timer1 ma quando parte uno si ferma l'altro perchè?
    grazie

  10. #10
    Quote Originariamente inviata da andbin Visualizza il messaggio
    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 ("0:00:00.0");
            labelTime.setFont (new Font ("SansSerif", Font.BOLD, 30));
            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 (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 ();
                }
            });
        }
    }
    ciao ragazzi, so che arrivo in ritardo, comunque ho eseguito il codice e all'ora di farlo partire mi compare il cronometro senza problemi...ma se provo a farlo partire mi esce questo messaggio sulla console ''Exception in thread "AWT-EventQueue-0" java.util.UnknownFormatConversionException: Conversion = '0' at java.util.Formatter.checkText(Unknown Source)
    at java.util.Formatter.parse(Unknown Source)
    at java.util.Formatter.format(Unknown Source)
    at java.util.Formatter.format(Unknown Source)
    at java.lang.String.format(Unknown Source)
    at attempt2$1.actionPerformed(attempt2.java:33)
    at javax.swing.Timer.fireActionPerformed(Unknown Source)
    at javax.swing.Timer$DoPostEvent.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source) "
    e sinceramente non so molto bene manco cosa voglia dire... qualcuno potrebbe darmi una mano? ho appena iniziato a programmare, perciò non ho ancora molta scioltezza. Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.