Accueil > > > JPANEL CALENDRIER
JPANEL CALENDRIER
Information sur la source
Description
je soummet cette source rien que pour essayer de contribuer à ce site intéressant, si ça marche ,j'en soumetterais d'autres ;) biensur pa tres grosse :) voilà lors d'un projet j'ai eu besoin d'un calendrier en bouttons don j'ai dû developper cette classe qui hérite d'un JPanel , reétulisable qui présente presque un calendrier mais quii marche mois par mois /// les jour sont affichés sur des bouton donc il suffit d'ajoputer des procedure dans l'actionPerformed pour éditer un RDV ou consulter l'hisorique d'un audiot ou autre .. à vous de voir selon le besoin
Source
- import java.awt.event.*;
- import javax.swing.*;
- import java.util.*;
-
-
- class Calendrier extends JPanel implements ActionListener{
-
- JPanel container;
- Vector btnVect = new Vector();
- SButton suiv;
- SButton prec;
-
- int x0,y0,mois,annee;//x0 et y0 sont les coordonnées pour setLocation
-
- Calendrier(int x0,int y0,int iMois,int iAnnee,JPanel container){
- super();
- this.container = container;
- this.x0 = x0;
- this.y0 = y0;
- this.mois = iMois;
- this.annee = iAnnee;
- container.setLayout(null);
- setOpaque(false); //si vous utiliser une image comme fond
- setBounds(x0,y0,420,360);
- setLayout(null);
- container.add(this);
-
- prec = new SButton("<<",100,0,50,28,true,this);
- new SLabel(string(iMois)+" "+iAnnee,1,14,150,0,120,30,this);
- suiv = new SButton(">>",270,0,50,28,true,this);
- prec.addActionListener(this);
- suiv.addActionListener(this);
- new SLabel("Dim",1,12,0,30,60,30,this);
- new SLabel("Lun",1,12,60,30,60,30,this);
- new SLabel("Mar",1,12,120,30,60,30,this);
- new SLabel("Mer",1,12,180,30,60,30,this);
- new SLabel("Jeu",1,12,240,30,60,30,this);
- new SLabel("Ven",1,12,300,30,60,30,this);
- new SLabel("Sam",1,12,360,30,60,30,this);
-
- remplirVect();
- afficherGrille(iMois,iAnnee);
- }
-
- //procedure de remplissage du vecteur par des boutton standard
- public void remplirVect(){
- int ligne = 0;
- while (ligne<6){
- int colonne = 0;
- while( colonne<7){
- JButton btn = new JButton();
- btn.setBounds(colonne*60,(ligne*60)+60,60,60);
- btn.setVisible(false);
- btnVect.addElement(btn);
- colonne++;
- }
- ligne++;
- }
- }
-
- public void afficherGrille(int iMois,int iAnnee){
- for (int i = jour(iAnnee,iMois,1);i<(jour(iAnnee,iMois,1)+nbreJour(iMois,iAnnee));i++){
- JButton b = new JButton();
- b = (JButton)btnVect.elementAt(i-1);
- b.setVisible(true);
- b.setLabel(new Integer(i-jour(iAnnee,iMois,1)+1).toString());
- add(b);
- b.addActionListener(this);
- }
- }
-
-
- public int jour(int annee,int mois, int jour){
- int retour = 0;
- for(int i=1900;i<annee;i++)
- if(i%4 == 0)retour+=366;
- else retour+=365;
- for(int i=1;i<mois;i++){
- if((i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12))retour+=31;
- if((i==4)||(i==6)||(i==9)||(i==11))retour+=30;
- if((i==2)&&(annee%4==0))retour+=29;
- if((i==2)&&(annee%4!=0))retour+=28;
- }
- for(int i=0;i<jour;i++)
- retour+=1;
- if(retour%7==0) retour = 7;
- else retour = retour%7;
- return (retour);
- }
-
- public String string(int i){
- String retour = new String();
-
- switch(i){
- case 1 : { retour ="Janvier";break; }
- case 2 : { retour ="Février";break; }
- case 3 : { retour ="Mars";break; }
- case 4 : { retour ="Avril";break; }
- case 5 : { retour ="Mai";break; }
- case 6 : { retour ="Juin";break; }
- case 7 : { retour ="Juillet";break; }
- case 8 : { retour ="Aout";break; }
- case 9 : { retour ="Septembre";break; }
- case 10: { retour ="Octobre";break; }
- case 11: { retour ="Novembre";break; }
- case 12: { retour ="Décembre";break; }
- }
- return retour;
- }
-
- public int nbreJour(int mois,int annee){
- int retour = 0;
-
- switch(mois){
- case 1 : { retour = 31;break; }
- case 2 : {
- if(annee%4 == 0) retour = 29;
- else retour = 28;
- break; }
- case 3 : { retour =31;break; }
- case 4 : { retour =30;break; }
- case 5 : { retour =31;break; }
- case 6 : { retour =30;break; }
- case 7 : { retour =31;break; }
- case 8 : { retour =31;break; }
- case 9 : { retour =30;break; }
- case 10: { retour =31;break; }
- case 11: { retour =30;break; }
- case 12: { retour =31;break; }
- }
- return retour;
- }
-
- public void actionPerformed(ActionEvent e){
- if(e.getSource() == suiv){
- container.removeAll();
- int m,a;
- if(mois==12){
- m=1;
- a=annee+1;}
- else{
- m=mois+1;
- a=annee;}
- container.add(new Calendrier(x0,y0,m,a,container));
- container.repaint();
- }
- if(e.getSource() == prec){
- container.removeAll();
- int m,a;
- if(mois==1){
- m=12;
- a=annee-1;}
- else{
- m=mois-1;
- a=annee;}
- container.add(new Calendrier(x0,y0,m,a,container));
- repaint();
- }
- }
-
- }
-
- // les deux classes qui suivent font partie de ma bibliothèque de composants personélisée
- // changer les si elles vous plaisent pa ;)
-
- //****************************************************************/
- //label personalisé
- /****************************************************************/
-
- class SLabel extends JLabel{
-
- public SLabel(String label,int horizental,int taillePolice,int x0,int y0,int x,int y,JPanel contentPane){
- super(label);
- setFont(new java.awt.Font("Monospaced", 1, taillePolice));
- setBounds(x0,y0,x,y);
- if(horizental == 0)
- setHorizontalAlignment(SwingConstants.LEFT);
- if(horizental == 1)
- setHorizontalAlignment(SwingConstants.CENTER);
- if(horizental == 2)
- setHorizontalAlignment(SwingConstants.RIGHT);
- contentPane.add(this);
-
- }
- }
-
-
- /****************************************************************/
- // Boutons personalisé
- /***************************************************************/
-
- class SButton extends JButton{
- public SButton(String label,int x0,int y0,int x,int y,boolean visible,JPanel contentPane){
- super(label);
- setFont(new java.awt.Font("Monospaced", 1, 14));
- setBounds(x0,y0,x,y);
- setVisible(visible);
- setOpaque(false);
- contentPane.add(this);
- }
- }
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
class Calendrier extends JPanel implements ActionListener{
JPanel container;
Vector btnVect = new Vector();
SButton suiv;
SButton prec;
int x0,y0,mois,annee;//x0 et y0 sont les coordonnées pour setLocation
Calendrier(int x0,int y0,int iMois,int iAnnee,JPanel container){
super();
this.container = container;
this.x0 = x0;
this.y0 = y0;
this.mois = iMois;
this.annee = iAnnee;
container.setLayout(null);
setOpaque(false); //si vous utiliser une image comme fond
setBounds(x0,y0,420,360);
setLayout(null);
container.add(this);
prec = new SButton("<<",100,0,50,28,true,this);
new SLabel(string(iMois)+" "+iAnnee,1,14,150,0,120,30,this);
suiv = new SButton(">>",270,0,50,28,true,this);
prec.addActionListener(this);
suiv.addActionListener(this);
new SLabel("Dim",1,12,0,30,60,30,this);
new SLabel("Lun",1,12,60,30,60,30,this);
new SLabel("Mar",1,12,120,30,60,30,this);
new SLabel("Mer",1,12,180,30,60,30,this);
new SLabel("Jeu",1,12,240,30,60,30,this);
new SLabel("Ven",1,12,300,30,60,30,this);
new SLabel("Sam",1,12,360,30,60,30,this);
remplirVect();
afficherGrille(iMois,iAnnee);
}
//procedure de remplissage du vecteur par des boutton standard
public void remplirVect(){
int ligne = 0;
while (ligne<6){
int colonne = 0;
while( colonne<7){
JButton btn = new JButton();
btn.setBounds(colonne*60,(ligne*60)+60,60,60);
btn.setVisible(false);
btnVect.addElement(btn);
colonne++;
}
ligne++;
}
}
public void afficherGrille(int iMois,int iAnnee){
for (int i = jour(iAnnee,iMois,1);i<(jour(iAnnee,iMois,1)+nbreJour(iMois,iAnnee));i++){
JButton b = new JButton();
b = (JButton)btnVect.elementAt(i-1);
b.setVisible(true);
b.setLabel(new Integer(i-jour(iAnnee,iMois,1)+1).toString());
add(b);
b.addActionListener(this);
}
}
public int jour(int annee,int mois, int jour){
int retour = 0;
for(int i=1900;i<annee;i++)
if(i%4 == 0)retour+=366;
else retour+=365;
for(int i=1;i<mois;i++){
if((i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12))retour+=31;
if((i==4)||(i==6)||(i==9)||(i==11))retour+=30;
if((i==2)&&(annee%4==0))retour+=29;
if((i==2)&&(annee%4!=0))retour+=28;
}
for(int i=0;i<jour;i++)
retour+=1;
if(retour%7==0) retour = 7;
else retour = retour%7;
return (retour);
}
public String string(int i){
String retour = new String();
switch(i){
case 1 : { retour ="Janvier";break; }
case 2 : { retour ="Février";break; }
case 3 : { retour ="Mars";break; }
case 4 : { retour ="Avril";break; }
case 5 : { retour ="Mai";break; }
case 6 : { retour ="Juin";break; }
case 7 : { retour ="Juillet";break; }
case 8 : { retour ="Aout";break; }
case 9 : { retour ="Septembre";break; }
case 10: { retour ="Octobre";break; }
case 11: { retour ="Novembre";break; }
case 12: { retour ="Décembre";break; }
}
return retour;
}
public int nbreJour(int mois,int annee){
int retour = 0;
switch(mois){
case 1 : { retour = 31;break; }
case 2 : {
if(annee%4 == 0) retour = 29;
else retour = 28;
break; }
case 3 : { retour =31;break; }
case 4 : { retour =30;break; }
case 5 : { retour =31;break; }
case 6 : { retour =30;break; }
case 7 : { retour =31;break; }
case 8 : { retour =31;break; }
case 9 : { retour =30;break; }
case 10: { retour =31;break; }
case 11: { retour =30;break; }
case 12: { retour =31;break; }
}
return retour;
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == suiv){
container.removeAll();
int m,a;
if(mois==12){
m=1;
a=annee+1;}
else{
m=mois+1;
a=annee;}
container.add(new Calendrier(x0,y0,m,a,container));
container.repaint();
}
if(e.getSource() == prec){
container.removeAll();
int m,a;
if(mois==1){
m=12;
a=annee-1;}
else{
m=mois-1;
a=annee;}
container.add(new Calendrier(x0,y0,m,a,container));
repaint();
}
}
}
// les deux classes qui suivent font partie de ma bibliothèque de composants personélisée
// changer les si elles vous plaisent pa ;)
//****************************************************************/
//label personalisé
/****************************************************************/
class SLabel extends JLabel{
public SLabel(String label,int horizental,int taillePolice,int x0,int y0,int x,int y,JPanel contentPane){
super(label);
setFont(new java.awt.Font("Monospaced", 1, taillePolice));
setBounds(x0,y0,x,y);
if(horizental == 0)
setHorizontalAlignment(SwingConstants.LEFT);
if(horizental == 1)
setHorizontalAlignment(SwingConstants.CENTER);
if(horizental == 2)
setHorizontalAlignment(SwingConstants.RIGHT);
contentPane.add(this);
}
}
/****************************************************************/
// Boutons personalisé
/***************************************************************/
class SButton extends JButton{
public SButton(String label,int x0,int y0,int x,int y,boolean visible,JPanel contentPane){
super(label);
setFont(new java.awt.Font("Monospaced", 1, 14));
setBounds(x0,y0,x,y);
setVisible(visible);
setOpaque(false);
contentPane.add(this);
}
}
Conclusion
je ne pense pas qu'il y a grand choz à expliquer , le code est simple mais utile seulement à mon avi mais s'il y a des question ou des conseils pour m'amiliorer n'hésitez pas , et merci d'avance :)
Historique
- 29 août 2005 10:11:08 :
- il y avait une petite erreur de saisie
g changé "Grille" par "Calendrier" dans actionPerformed
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Diff dates [ par alonsyl ]
bonjour, je cherche un petit prg pour calculer la duree séparant la date actuelle d'une date t (le 17/8/2005 a 18h 48min 5s). je voudrais que le
affichage et rafraichissement de l'heure dans une page JSP [ par aminos88 ]
Bonjour ;j'ai un code java inserrer dans une page JSP qui affiche l'heure dans une page web mais le probleme que je doit chaque foix actualiser la pag
mettre à jour un JPanel [ par tuffd ]
Bonjour,J'ai un programme dans lequel je dessine des forme dans un JPanel,L'utilicateur selection la forme et fait un clique sur l'ecran.Quan je chois
splitPane [ par Dellys ]
Bonjour,Voila je cherche a séparé deux jpanel avec un jsplitepanel, mais je n'ai arrivent pas , quand j'implémente le jsplitepaenl les deux jpanel d
jTable pour un agenda [ par KenT2004 ]
Bonjour,je suis programmeur en java (enfin tres apprentis ^^). Pour mes cours je dois faire un projet.On a désidé de faire un calendrier.Seulement, bi
Problème de dessin dans JPanel [ par fantmar ]
bonjours à tous j'ai réaliser un petit jeu qui consiste à tirer une balle par canon avec une vitesse initiale est une angle donnée. j'ai utiliser un J
Un calendrier graphique pour la saisie des dates [ par kam81 ]
Bonjour,Existe-t-il un calendrier graphique pour eviter la saisie des dates dans une application java?Merci.
Disposition de boutons et TextField [ par Jordan59 ]
Bonsoir tout le monde,Je débute en java et je suis en train de réaliser un TP qui consiste à faire un petit Atlas routier, j'ai finalement réussi mais
Mise en forme [ par plop3000 ]
Bonjour,J'ai développé un petit formulaire Java avec les attributs nom, prenoms, adresse, etcMon problème est que je ne parviens pas à le mettre en fo
Ajouter un JPanel dans un JPanel à une position précise [ par jlpcesar ]
Bonjour tout le monde ! Juste une petite question. Je développe actuellement une application permettant la gestion de réservations dans un restaurant
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SQLRE : SQL par Julien39
Cliquez pour lire la suite par Julien39
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|