digitale klok

Status
Niet open voor verdere reacties.

dollo

Gebruiker
Lid geworden
1 jan 2008
Berichten
118
Hallo,
hoe kan ik mijn klok draaiend krijgen?

ik heb de volgende code al:

seconde = (seconde + 1) % 60;
if (seconde == 0) {
minuut = (minuut + 1) % 60;
if (minuut == 0) {
uur = (uur + 1) % 24;
}
}
nu wil ik dat deze als een soort van digitale tijd weergeven?
kan ik dit in een System.out zeggen en deze in een loop zetten?

Tnks:thumb:
 
vraag 1 is het eenvoudigst...

System.out.println(uur +":" + minuut + ":" seconde);

Je kan je functies in een (oneindige) lus zetten. Echter jou code moet maar 1x per seconde runnen. Dus moet je een na elke keer dat je code is uitgevoerd een 1000 ms wachten. Dit kan met Thread.sleep(1000).

Code:
try {
            while(true) {
                // hier je code...
                Thread.sleep(1000);
            }
        } catch (InterruptedException ex) {
            //JVM probeert jou programma af te sluiten...
        }

Nadeel van deze methode is dat je programma niks meer kan doen.. Met Thread.sleep geeft je aan dat je programma niks meer wilt doen en JAVA krijgt de rest van de tijd.
De InterruptedException krijgt je van JAVA als die jou programma moet afsluiten, je krijgt dan nog een keer de mogelijkheid om wat "op te ruimen".

Een betere manier is om de javax.swing.Timer class te gebruiken. dit ziet er als volgt uit:

Code:
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        Timer klok = new Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // hier je code voor de klok...
            }
        });
        klok.start();
       
        //hier moet je aan de user vragen of hij wil stoppen...
       
        klok.stop();
    }

}

Wat de code doet.. Je maakt een nieuwe ActionListener object aan en een timer object. De timer zal in de achtergrond lopen en elke 1000 ms de methode actionPerformed(..) aanroepen van je ActionListener object.

Je moet er wel voor zorgen dat er tussen klok.start en klok.stop.. code komt te staan.. anders is je klok al weer gestopt voor je het weet.
Omdat je klok code in de achtergrond loopt, kan je programma iets anders nuttigs doen. :)
 
Er is een Action(Event)Listener. Het is een beetje verstopt in een anonymous inner class.

Code:
new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // hier je code voor de klok...}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan