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
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
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
ActionListener [ par amededaille ]
Bonjour, Je dois créer dans le cadre de mes études une palette graphique. Le langage utilisé est JAVA. Je dois, lorsque je clique sur un bouton - qui
Rafraichir un JPanel [ par mannouw ]
Bonjour à tous ,J'ai un panel qui contient plusieurs labels et buttons le nombre de ces derniers dépendent d'un variable.J'ai essayé de rafraichir le
Insérer un jTextfield dans un jPanel [ par roura22 ]
Salut à tous, J'utilise dans mon application la bibliothèque Swing. J'ai crée un jPanel à l'aide de cette bibliothèque, je veux maintenant insérer un
Problème JFileChooser dans un applet [ par mikevkb ]
Bonjour ts! Voilà, j'ai un problème avec un JFilechooser... Explications: J'ai un applet et j'aimerais récupérer le nom des fichiers dans un dossier
jButton et jTabbedPane... [ par FordNYR ]
j'ai une interface qui contient un JTabbedPane avec plusieurs JPanel...je veut utiliser une seul JButton qui fonctionne pour tous les
Proble GridLayout [ par sayone ]
Bonjour à tous,Je suis débutant et je dois créer une genre d'interface graphique mais le probleme c'est que je n'arrive pas à positionner les texte et
probleme de rafraichissement d'un JPanel [ par chien57 ]
j'affiche des éléments graphic dans un JPanel et ses éléments se déplace après avoir calculer la nouvelle position je veut rafraichir le JPanel et po
|
Derniers Blogs
EDITEUR XAML DE VISUAL STUDIO: COMMENT ALIGNER LES ATTRIBUTS LES UNS EN DESSOUS DES AUTRES AUTOMATIQUEMENTEDITEUR XAML DE VISUAL STUDIO: COMMENT ALIGNER LES ATTRIBUTS LES UNS EN DESSOUS DES AUTRES AUTOMATIQUEMENT par Miiitch
Lorsque l'on écrit du XAML, les tags XML peuvent vraiment devenir très longs et pas pratique à lire: Il y a une option vraiment pratique dans l'éditeur de Visual Studio qui va nous permettre de réorganiser tout cela en mettant les attributs XAML les uns e...
Cliquez pour lire la suite de l'article par Miiitch MIX10 A LAS VEGAS : IMMERSIONMIX10 A LAS VEGAS : IMMERSION par odewit
Hi from Vegas !
En resume [je corrigerai les accents a mon retour !], Las Vegas m'impressionne par sa demesure.
Ou que l'on aille, les itineraires traversent des salles bruyantes pleines de machines a sous et de tables de jeu.
Les decors, surtout a...
Cliquez pour lire la suite de l'article par odewit [RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE par Audrey
A l'occasion d'un projet client, j'ai utilisé RIA Services avec Silverlight 3 (mais cela fonctionne aussi avec la version 4), et je l'ai utilisé pour une interface façon Maitre / Détail. Voici comment j'ai procédé pour arriver à mes fins. Nous allons pren...
Cliquez pour lire la suite de l'article par Audrey CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|