begin process at 2010 03 15 11:20:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date et Heure

 > JPANEL CALENDRIER

JPANEL CALENDRIER


 Information sur la source

Note :
5 / 10 - par 4 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date et Heure Classé sous :jpanel, calendar, calendrier, control, datetime Niveau :Initié Date de création :25/08/2005 Date de mise à jour :29/08/2005 10:11:08 Vu / téléchargé :13 587 / 1 232

Auteur : tncoder

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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 :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 août 2005 10:11:08 :
il y avait une petite erreur de saisie g changé "Grille" par "Calendrier" dans actionPerformed

 Sources du même auteur

Source avec Zip SCROLLABLEJLIST

 Sources de la même categorie

Source avec Zip CHRONOMETRE par didoux95
Source avec Zip CHRONOMETRE SEC + CENTIEMES par z bozzo
LES JOURS FERIES MOBILES DES ANNÉES À VENIR par yvkoe
Source avec Zip Source avec une capture COMMANDE "CAL" SOUS *UX par dje_jay
OBTENIR DATE ET HEURE par danimo

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALENDRIER EN JAVA (APPLET JAVA) POUR ANNONCER UN EVENEMENT ... par aladec2007
Source avec Zip Source avec une capture CALENDRIER par Shibo_Sources
Source avec Zip Source avec une capture CALENDRIER AVEC JOURS FÉRIÉS par erick_m33
Source avec Zip MATRIX JPANEL par gulamh
CLOCKTALK : UN BON CODE POUR AFFICHER L'HEURE par Bog

Commentaires et avis

Commentaire de alex1er le 26/08/2005 09:27:29

Il manque la classe Grille

@+

Commentaire de tncoder le 26/08/2005 21:50:37

dslé , la classe grille n'est pas manquante
en fait cette meme classe s'appelait grille mais moi je l'ai changé avant de la publier donc il te suffit de remplacer le mot "Grille" par "Calendrier" dans tt le code et ça va marcher
sinon laisse un msg @+

Commentaire de XIIIOreiller le 30/08/2005 11:25:24

Bon, je n'ai pas utilisé ton source mais par contre, je vais me permettre d'en faire une analyse rapide.

1) Un GROS défaut selon moi, l'utilisation de la méthode setBounds alors que ton calendrier héritant de JPanel, il sera positionné à l'aide du LayoutManager donc, les coordonnées seront calculées automatiquement

2) Quelques coquilles dans le code mais rien de bien grave (si tu veux que je t'en dise un peu plus, dis le moi, on ne va pas s'éterniser là dessus)

3) Une question me vient à l'esprit, pourquoi n'as tu pas utiliser certaines classes gérant la date??? Cela t'aurais éviter de faire du code pour rien (mais tu dois avoir tes raisons que je ne connais pas mai qui m'intéresse)

Voila, si tu veux que l'on discute plus longuement du comment rendre ton code plus propre (et donc plus exploitable), n'hésite pas demande moi, il n'y a pas de problème.

Commentaire de XIIIOreiller le 30/08/2005 11:32:07

Je voulais juste rajouter que mes critiques ne sont pas là pour te décourager, au contraire, plus nombreux sont les avis, plus on a de chance de progresser. Libre à toi après de faire de la refonte de code si tu le souhaite.

Commentaire de EPS32HAY le 30/08/2005 11:36:05

Salut,

Moi je connais pas grand chose en JAVA, mais je tiens à te remercier pour ce code qui va surement m'aider.

Bonne prog

Commentaire de tncoder le 30/08/2005 12:34:18

POUR MR XIIIOreiller, je ne dis jamais non pour apprendre alors bienvenue à tte tes proposition et pour les raison d'eviter le gragorainCalendar etc..  j'ai ma propre classe SDate qui utilise plusieur fonctions de Calendar et compagnie mais j'ai utilisé cette maniere pour me simplifier la vie c tt , c à la machine de se casser la tete :)
et pouur ce qui est des Layout manager je les deteste ;) d'habitude je fais tt seul les calcul pour garder l'interface intacte , mais en ce moment je suis un peu précé par le temps je dois livrer une version beta d'un petit projet donc l'optimisation c pa ma priorité mnt
merci qd meme pour tes remarques et bienvenue encore pour ton aide

Commentaire de tncoder le 30/08/2005 12:36:14

merci ESP32HAY , moi meme je suis en train d'apprendre java et ce site m'aide ennormément , amors bon courage à nous deux ;)

Commentaire de tarzent le 02/10/2005 03:31:14

Bonsoir,

Je ne comprends vraiment pas pourquoi tu n'utilises pas un GregorainCalendar. Là t'es obligé de tout te retaper à la main.
Idem pour ce qui est des Jours et des Mois, il y a moyen de récupérer directement tout ça dans des String sans les définir à la main.

A ne pas vouloir utiliser des classes déjà existantes (ce qui au passage permettrait de réduire au moins de moitié la longueur de ton code), ton interprétation des années bissextiles s'en trouve fausse. Il y a qqch à prendre en compte au niveau des siècles me semble-t-il...

Si j'ai un peu de temps je posterai un code raccourci... ;-)

Si tu as des questions n'hésite pas !

Commentaire de tarzent le 03/10/2005 21:20:47

Voilà, j'en ai codé un assez rapidement. Ca va très vite lorsqu'on a les bonnes classes à disposition. J'ai même eu le temps d'ajouter un changement de locale : les jours sont affichés et disposés (premier jour = dimanche ou lundi) en fonction de cette locale.
Si mon code n'est pas suffisament lisible, n'hésitez pas à me poser des questions.

J'envisage d'en poster un un peu plus évolué dans quelques temps.

###################################################################################

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


public class JCalendar
extends JPanel {
        
    private Locale _locale = getDefaultLocale();
    
    private GregorianCalendar _calendar = new GregorianCalendar();
    
    private DateFormatSymbols _dateSymbols = new DateFormatSymbols();
    
    private SimpleDateFormat _formatMY = new SimpleDateFormat("MMMM yyyy");
    
    private int _firstDayOfWeek = _calendar.getFirstDayOfWeek();
    
    private final JLabel _monthYear = new JLabel("", SwingUtilities.CENTER);
         
    private final JLabel[] _daysOfWeek = new JLabel[7];
    
    private final JButton[] _daysNumber = new JButton[42];
    
    private final ActionListener _changeMonth = new ActionListener() {
        public void actionPerformed(final ActionEvent ae) {
            final int nb = "next".equals(ae.getActionCommand()) ? 1: -1;
            _calendar.add(Calendar.MONTH, nb);
        updateMonthYear();
        updateDaysNumber();
        }
    };
    
    public JCalendar() {
        setLayout(new BorderLayout());
        // Month Panel
        final JPanel monthPanel = new JPanel();
        final JButton previous = new JButton("<<");
        previous.addActionListener(_changeMonth);
        final JButton next = new JButton(">>");
        next.addActionListener(_changeMonth);
        next.setActionCommand("next");
        _monthYear.setPreferredSize(new Dimension(120, 20));
        monthPanel.add(previous);
        monthPanel.add(_monthYear);
        monthPanel.add(next);
        add(monthPanel, BorderLayout.NORTH);
        // Day Panel
        final JPanel dayPanel = new JPanel();
        dayPanel.setLayout(new GridLayout(7, 7));
        for (int i = 0; i < 7; ++i)
            dayPanel.add(_daysOfWeek[i] = new JLabel("", SwingUtilities.CENTER));
        for (int i = 0; i < _daysNumber.length; ++i)
            dayPanel.add(_daysNumber[i] = new JButton());
        add(dayPanel, BorderLayout.CENTER);
        // Remplissage des composants
        updateMonthYear();
        updateDaysOfWeek();
        updateDaysNumber();
    }
    
    // Réactualise la locale et réaffiche le contenu des composants
    private void updateLocale(final Locale locale) {
        _locale = locale;
        final Date tmp = _calendar.getTime();
        _calendar = new GregorianCalendar(_locale);
        _calendar.setTime(tmp);
        _firstDayOfWeek = _calendar.getFirstDayOfWeek();
        _dateSymbols = new DateFormatSymbols(_locale);
        _formatMY = new SimpleDateFormat("MMMM yyyy", _locale);
        updateMonthYear();
        updateDaysOfWeek();
        updateDaysNumber();
    }
    
    // Affiche le mois et l'année en cours
    private void updateMonthYear() {
        _monthYear.setText(_formatMY.format(_calendar.getTime()));
    }
    
    // Affiche les jours de la semaine
    private void updateDaysOfWeek() {
        final String[] weekDays = _dateSymbols.getShortWeekdays();
        for (int i = 1; i < weekDays.length; ++i) {
            final int index = (i - 2 + _firstDayOfWeek) % 7 + 1;
            _daysOfWeek[i - 1].setText(weekDays[index]);
        }
    }
    
    // Affiche le numéro des jours
    private void updateDaysNumber() {
        final Date tmp = _calendar.getTime();
        _calendar.set(Calendar.DAY_OF_MONTH, 1);
        final int firstDay = _calendar.get(Calendar.DAY_OF_WEEK);
        final int LocalFirstDay = (firstDay - _firstDayOfWeek + 7) % 7 + 1;
        boolean full = false;
        for (int i = 0; i < _daysNumber.length; ++i) {
            //Détermine si le composant est affiché ou non
            final boolean isNotEmpty = i < LocalFirstDay - 1 || full;
            _daysNumber[i].setVisible(!isNotEmpty);
            // Affichage du jour
            if (!isNotEmpty) {
                final int dayOfMonth = _calendar.get(Calendar.DAY_OF_MONTH);
                _daysNumber[i].setText(String.valueOf(dayOfMonth));
                _calendar.add(Calendar.DAY_OF_MONTH, 1);
                full = 1 == _calendar.get(Calendar.DAY_OF_MONTH);
            }
        }
        _calendar.setTime(tmp);
    }
    
    
    public static void main(final String[] args)
    throws ParseException {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                final JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.getContentPane().add(new JCalendar());
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

Commentaire de natha le 21/10/2005 14:22:07

Y a mieux :

http://www.toedter.com/en/jcalendar/

Au passage pour tarzent : l'utilisation de '_' pour les propriétés de ta classe c'est pas à la norme... On fait pas du C ici mais du Java. C'est pas propre non plus d'initialiser toutes tes variables directement. Un constructeur en général, ça sert à ça. Enfin bon, à ta façon de coder en général on voit que tu viens du C et/ou C++.

Pour tncoder, tu perds un temps fou si tu calcules toutes les positions pour te passer des layout manager. Utilise le FormLayout de JGoodies, tu gagneras un temps précieux et en plus ça sera plus facile à maintenir.

Commentaire de XIIIOreiller le 22/10/2005 09:55:30

Je suis d'accord avec Natha pour dire qu'il ne sert pas à grand chose de refaire des choses existantes et qu'utiliser ce qui existe est bien, mais n'est il pas plus important d'apprendre (c a d refaire des choses simples pour apprendre les base - comme utiliser un layout ou en faire un soit même). Donc pour moi, le seul truc qui me gene, c'est la non utilisation de layout (non conforme à la norme swing et reutilisabilité que je qualifierait d'inexistante), pour ce qui est de refaire un calendar, là j'aurais tendance à dire pas de problème, c'est même bien car on peut vouloir certaine spécificités, donc d'un point de vue pédagogique, c'est très bien.

Commentaire de tarzent le 08/11/2005 01:14:12

J'ai codé cette classe un peu vite, désolé pour l'initialisation des variables.
Par contre Natha je ne vois pas trop où tu as vu que ce n'était pas à la norme d'utiliser des '_' pour les propriétés private d'une classe... C'est beaucoup plus lisible comme ça et ça évite bien des confusions.

Quant-à ton lien sur le JCalendar, je trouve qu'il est assez interessant (je le connaissais déjà), mais je trouve ça un peu exagéré pour ceux qui veulent juste afficher un calendrier basique.

Commentaire de XIIIOreiller le 08/11/2005 10:39:37

Tarzent, pour ce qui est du _ pour les propriétés private d'une classe, ce n'est pas la norme car tu ne trouvera jamais une norme de programmation utilisé ceci (je suis prestataire de service en informatique et j'ai vu un paquet de norme de programmation).

Pour une programmation "propre", l'ensemble des propriétés d'une classe devrait être private ou protected (pour l'héritage) avec des méthodes public permettant de modifier ces propriétés.
ex :

private int nomDeLaVariable = 0;

et
public void setVariable(int value) {
   nomDeLaVariable = value;
}
public int getVariable() {
   return nomDeLaVariable ;
}

Après, il est nécessaire de nommer la variable de façon à bien la reconnaitre et une des méthodes le plus souvent employée est d'utiliser le préfixe m_ (pour variable membre) plutot que "_". Après cela est à l'appréciation de chacun mais la méthode que je te donne permet d'utiliser plusieurs préfixe genre s_ pour des constantes static (ceci n'est pas utiliser dans java, généralement c'est en majuscule).

Bref, tout cela pour dire qu'il n'y a pas de norme universelle mais qu'il est intéressant de voir comment cela est fait dans les classes de base de java et de faire pareil pour qu'il y ait une certaine homogénéité dans le code source (cela aide les gens qui utilise votre code).

Commentaire de Corwen le 08/12/2005 18:37:40

Bonjour a tous.
Je vien de decouvrir cette classe.
Elle pourrait m'aider a avancer l'un de mesp rojet d'etudes.
Mais il se presente un petit soucis.
En effet, la compilation se passe bien mais a l'execution il me dit qu'il y a un petit probleme de main
Comment resoudre ce probleme.
Merci d'avance.

Commentaire de ulysse00 le 09/11/2007 13:44:50

merci  tarzent mais j'ai un soucis comment faire une actionlistener sur le bouton si je click sur _daysNumber[i]

final JPanel dayPanel = new JPanel();
        dayPanel.setLayout(new GridLayout(7, 7));
        for (int i = 0; i < 7; ++i)
            dayPanel.add(_daysOfWeek[i] = new JLabel("", SwingUtilities.CENTER));
        for (int i = 0; i < _daysNumber.length; ++i)
        dayPanel.add(_daysNumber[i] = new JButton());
         add(dayPanel, BorderLayout.CENTER);

Commentaire de nabilokov le 22/02/2010 16:37:06

Bonjour ,

pourriez-vous mettre un code qui permet directement de sélectionner une date à partir d'un JCombobox ? calendrier cliquable
merci d'avance

 Ajouter un commentaire


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&#233;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


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales