Horloge graphique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 250 fois - Téléchargée 27 fois

Contenu du snippet

ce code sert simplement à afficher une horloge avec des aiguilles ! Il récupère l' heure actuelle !!
Vous pouvez changez la couler des aiguilles, ...

Source / Exemple :


import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.lang.Math.*;
import java.util.GregorianCalendar;

public class ClockApp
{
	ClockApp()
	{
		fenetre=new JFrame("JClock");
		fenetre.addWindowListener( new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		
		calend=new GregorianCalendar();
		h=calend.get(GregorianCalendar.HOUR_OF_DAY);
		min=calend.get(GregorianCalendar.MINUTE);
		sec=calend.get(GregorianCalendar.SECOND);
		
		clockPanel=new ClockPanel();
		fenetre.getContentPane().add(clockPanel);
		fenetre.setSize(400,400);
		fenetre.show();
		clockThread=new ClockThread(this);
		clockThread.start();
		
	}/* Fin constructeur*/
	
	class ClockPanel extends JPanel
	{
		public void paintComponent (Graphics g)
		{
			super.paintComponent(g);
			
			 xc=getWidth()/2;
			 yc=getHeight()/2;
		     int rayon=Math.min(xc,yc)*80/100;
		     
		     font= new Font("Times New Roman",0,15);
		     g.setFont(font);
			
			for(int i=1;i<=12;i++)
			{
			     double angle=i*Math.PI/6.0-Math.PI/2.0;
			     double x=xc+rayon*Math.cos(angle);
			     double y=yc+rayon*Math.sin(angle);
			      g.drawString(" "+i,(int)x,(int)y);
			}
			
			/* gestion et affichage de aiguilles*/
			
		 double anglesec=(sec*((Math.PI)/30.0)-(Math.PI/2.0));
		int xsf=xc+(int)(0.7*rayon*Math.cos(anglesec));
		int ysf=yc+(int)(0.7*rayon*Math.sin(anglesec));
		g.setColor(Color.red);
		g.drawLine(xc,yc,xsf,ysf);
			
	double anglemin=(min*((Math.PI)/30.0)-(Math.PI/2.0));
	int xmf=xc+(int)(0.6*rayon*Math.cos(anglemin));
	int ymf=yc+(int)(0.6*rayon*Math.sin(anglemin));
	g.setColor(Color.yellow);
	g.drawLine(xc,yc,xmf,ymf);
	double angleheure=(h*((2*Math.PI)/12.0)-(Math.PI/2.0));
	int xhf=xc+(int)(0.4*rayon*Math.cos(angleheure));
	int yhf=yc+(int)(0.4*rayon*Math.sin(angleheure));
	g.setColor(Color.green);
	g.drawLine(xc,yc,xhf,yhf);
			
	
		}/* fin de paintComponent */ 
	
	}/* fin de classe ClockPanel */
	
	public void increment()
	{
		sec=sec+1;
		if(sec>60)
		{
			min=min+1;
			sec=1;
			if(min>60)
			{
				min=1;
				h=h+1;
				if(h>12)
				{
					h=1;
				}
			}
		}
		clockPanel.repaint();
	}
	
	public static void main (String args[])
	{
		new ClockApp();
	}
	
	private JFrame fenetre;
	private GregorianCalendar calend;
	private int h,min,sec,xc,yc;
	private ClockPanel clockPanel;
	private ClockThread clockThread;
	private Font font;
	
}/* fin de classe ClockApp*/

class ClockThread extends Thread
{
	ClockThread(ClockApp horloge)
	{
		this.horloge=horloge;
	}
	public void run()
	{
		while(true)
		{
			horloge.increment();
			try
			{
				sleep(1000);
			}
			catch(InterruptedException e)
			{
			}
				
		}
	}
	private ClockApp horloge;
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
jeudi 24 mars 2011
Statut
Membre
Dernière intervention
19 mars 2011

salut svp je veut déplacer une image dans une applet comment je peut l faire !merciii
Messages postés
1
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
21 mai 2010

pas mal je trouve ça cool
Messages postés
196
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009

Aller jvai te donner 7/10
By Offlake
Messages postés
2
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
27 novembre 2008

C'est génial, tu es vraiment très fort en programmation!
Messages postés
1
Date d'inscription
mardi 27 février 2007
Statut
Membre
Dernière intervention
12 décembre 2007

Merci et encore Merci!!!
Grace à ton exemple de programme on a pu règler notre problème de swing!!!
Alors merci a toi!!!
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.