Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

JPANEL CALENDRIER


Information sur la source

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é: 12 348 / 1 159

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
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

Pour les "Membres Club", vous pouvez 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

Commentaires et avis

signaler à un administrateur
Commentaire de alex1er le 26/08/2005 09:27:29

Il manque la classe Grille

@+

signaler à un administrateur
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 @+

signaler à un administrateur
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.

signaler à un administrateur
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.

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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 ;)

signaler à un administrateur
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 !

signaler à un administrateur
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);
            }
        });
    }
}

signaler à un administrateur
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.

signaler à un administrateur
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.

signaler à un administrateur
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.

signaler à un administrateur
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).

signaler à un administrateur
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.

signaler à un administrateur
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);

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

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,749 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.