Horloge graphique

0/5 (9 avis)

Snippet vu 29 182 fois - Téléchargée 29 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
Iwin Messages postés 24 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 23 juillet 2004
31 oct. 2003 à 22:45
Oué c'est pas mal, je débute en Java et c'est super comme tutorial, même si c'est pas ça vocation...
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
23 févr. 2004 à 19:36
Je suis debutant et ton prog m'interesse.
j'aimerai savoir comment je peux l'implementer dans mon appli.
J'ai pas envie de l'avoir dans une autre fenetre, j'ai envie de l'avoir dans ma fenetre principale de mon appli.
J'ai essaye de creer un JPanel et de faire jPanel1.add(new Horloge());
mais ca marche pas. Je sais pas comment faire.
nerser Messages postés 39 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 27 juin 2007
18 mars 2006 à 23:16
salut comment peut on modifier ton code pour remplacer les eguilles par des texts
ami19 Messages postés 1 Date d'inscription samedi 22 avril 2006 Statut Membre Dernière intervention 23 mai 2006
23 mai 2006 à 14:54
bien fait comme code,je vous filicite
Louzof Messages postés 1 Date d'inscription mardi 27 février 2007 Statut Membre Dernière intervention 12 décembre 2007
12 déc. 2007 à 21:13
Merci et encore Merci!!!
Grace à ton exemple de programme on a pu règler notre problème de swing!!!
Alors merci a toi!!!

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.