poupoule00
Messages postés2Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention23 mai 2004
-
21 mai 2004 à 21:28
poupoule00
Messages postés2Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention23 mai 2004
-
23 mai 2004 à 21:21
Boonjour et merci d’avance de me repondre.
J’ai un projet a faire en jCreator qui consiste a entrer une date(jourdelasemaine, numero du jour, mois, annee) et pouvoir ensuite afficher le jour precedent ou le jour suivant. Et le tout dans un interface graphique.
Mon probleme se situe au niveau du lien entre la programmation du calendrie et l’interface graphique.
La programmation du calendrier doit etre juste par contre pour tout ce ki concerne l’inteface graphique
Donc si vous pouvez m’indiquer mes erreurs ce serez extremement gentil.
class JourSemaine
{
private int j;
private static final String[]t = { "LUNDI" , "MARDI" , "MERCREDI" , "JEUDI" , "VENDREDI" , "SAMEDI" , "DIMANCHE" };
public static final int LUNDI = 0;
public static final int MARDI = 1;
public static final int MERCREDI = 2;
public static final int JEUDI = 3;
public static final int VENDREDI = 4;
public static final int SAMEDI = 5;
public static final int DIMANCHE = 6;
public JourSemaine(int jour) throws Exception
{
if(!(0 <= jour && jour <= 6)) throw new Exception("jour de semaine invalide");
j = jour;
}
public String toString()
{
return t[this.j];
}
public JourSemaine suivant() throws Exception
{
return new JourSemaine(t[(this.j + 1)%7]);
}
public JourSemaine precedent() throws Exception
{
return new JourSemaine(t[(this.j + 6)%7]);
}
public JourSemaine(String jour) throws Exception
{
this(OperationDate.recherche(jour.trim(),t));
}
}
class OperationDate
{
public static int recherche(String s,String[]t)
/* renvoie i tq s =t[i] renvoie -1 si s n'est pas ds []t */
{
int i ;
i = 0;
while (i<t.length)
{
if (s.equalsIgnoreCase(t[i])) return i;
++i;
}
return -1;
}
public static boolean estBissextile(int a)
/* renvoie vraie si a est une année bissextile */
{
if (a%4==0) return true;
return false;
}
}
class Mois
{
private int m;
private static final String[]g = { "JANVIER" , "FEVRIER" , "MARS" , "AVRIL" , "MAI" , "JUIN" , "JUILLET" , "AOUT" , "SEPTEMBRE" , "OCTOBRE" , "NOVEMBRE" , "DECEMBRE" };
public static final int JANVIER = 0;
public static final int FEVRIER = 1;
public static final int MARS = 2;
public static final int AVRIL = 3;
public static final int MAI = 4;
public static final int JUIN = 5;
public static final int JUILLET = 6;
public static final int AOUT = 7;
public static final int SEPTEMBRE = 8;
public static final int OCTOBRE= 9;
public static final int NOVEMBRE = 10;
public static final int DECEMBRE = 11;
private static final int[]nb = {31,28,31,30,31,30,31,31,30,31,30,31};
public Mois(int mois) throws Exception
{
if (!(0<= mois && mois <=11)) throw new Exception ("mois invalide");
m = mois;
}
public Mois suiv()throws Exception
{
return new Mois(g[(this.m + 1)%12]);
}
public Mois préc() throws Exception
{
return new Mois (g[(this.m + 11)%12]);
}
public Mois(String m) throws Exception
{
this(OperationDate.recherche(m.trim(),g));
}
public int longueur(int an)
{
if (OperationDate.estBissextile(an) && this.m == FEVRIER) return 29;
else return nb[this.m];
}
public String toString()
{
return g[this.m];
}
public int numero()
{
return m;
}
}
class Date
{
private int jourMois;
private Mois mois;
private int annee;
public Date (Date d)
{
jourMois = d.jourMois;
mois = d.mois;
annee = d.annee;
}
public Date(int j,Mois m,int a) throws Exception
{
int l;
l = m.longueur(a);
if(!((1<= j) && (j <= l)))throw new Exception("date incorrecte");
jourMois = j;
mois = m;
annee = a;
}
public Date(int j,String m,int a) throws Exception
{
this(j,new Mois(m),a);
}
public String toString()
{
String s1,s2,s3;
s1 = Integer.toString(this.jourMois);
s2 = this.mois.toString();
s3 = Integer.toString(this.annee);
return s1 +" "+s2+" "+s3 ;
}
public Date suivante() throws Exception
{
int js;
Mois ms;
int as;
js = this.jourMois;
ms = this.mois;
as = this.annee;
int l;
l = ms.longueur(as);
if(js<l) ++js;
else
{
js =1;
ms = ms.suiv();
if (ms.numero() == mois.JANVIER) ++ as;
}
try
{
return new Date(js,ms,as);
}
catch (Exception e) {return this;}
}
public Date precedente() throws Exception
{
int jp;
Mois mp;
int ap;
jp = this.jourMois;
mp = this.mois;
ap = this.annee;
if (jp == 1)
{
mp = mp.préc();
jp = mp.longueur(ap); if(mp.numero() Mois.DECEMBRE) ap ap -1;
}
else jp = jp -1;
try
{
return new Date(jp,mp,ap);
}
catch (Exception e) {return this;}
}
public int jourDuMois()
{
return this.jourMois;
}
}
class Calendrier extends Date
{
private JourSemaine jourSemaine;
public Calendrier(JourSemaine jSemaine,int jMois,Mois mois,int annee) throws Exception
{
super(jMois,mois,annee);
jourSemaine = jSemaine;
}
public Calendrier (String jSemaine,int jMois,String mois,int annee) throws Exception
{
this( new JourSemaine(jSemaine),jMois,new Mois(mois),annee);
}
public Calendrier (JourSemaine jSemaine,Date d)
{
super(d);
jourSemaine = jSemaine;
}
public Calendrier suivant() throws Exception
{
return new Calendrier(this.jourSemaine.suivant(),super.suivante());
}
public Calendrier precedent() throws Exception
{
return new Calendrier(this.jourSemaine.precedent(),super.precedente());
}
public String toString()
{
String s1,s2;
s1 = this.jourSemaine.toString();
s2 = super.toString();
return s1+" "+s2;
}
public JourSemaine jourDeSemaine()
{
return this.jourSemaine;
}
}
class Etiquette extends Label
{
public Etiquette(String titre,Container c)
{
super(titre);
c.add(this);
}
}
class Bouton extends Button
{
public Bouton(String libelle,Container c,ActionListener a)
{
super(libelle);
c.add(this);
addActionListener(a);
}
}
class Sortie extends TextField
{
public Sortie(String mess,Container c)
{
super(mess,15);
c.add(this);
setEditable(false);
}
}
class Entree extends TextField
{
public Entree(String entree,Container c,ActionListener a)
{
super(entree,15);
c.add(this);
addActionListener(a);
}
}
class PanneauCentre extends Panel
{
Etiquette jourDeSemaine,jour,mois,annee,vide;
Entree cadre12,cadre13,cadre14;
Sortie cadre21,cadre22,cadre23,cadre24;
private static int lundi =0;
private static int mardi = 1;
private static int mercredi = 2;
private static int jeudi = 3;
private static int vendredi=4;
private static int samedi =5;
private static int dimanche =6;
List cadre11;
public PanneauCentre(ActionListener a)
{
setLayout(new GridLayout(3,4));
setBackground(Color.yellow);
jourDeSemaine = new Etiquette("jour de semaine",this);
jour = new Etiquette(" jour",this);
mois = new Etiquette(" mois",this);
annee = new Etiquette(" annee",this);
List listeJourSemaine = new List(7,false);
listeJourSemaine.add("LUNDI");
listeJourSemaine.add("MARDI");
listeJourSemaine.add("MERCREDI");
listeJourSemaine.add("JEUDI");
listeJourSemaine.add("VENDREDI");
listeJourSemaine.add("SAMEDI");
listeJourSemaine.add("DIMANCHE");
cadre11 = listeJourSemaine;
add(cadre11);
cadre12 = new Entree("1",this,a);
cadre13 = new Entree("JANVIER",this,a);
cadre14 =new Entree("2004",this,a);
cadre21 = new Sortie("",this);
cadre22 = new Sortie("",this);
cadre23 = new Sortie("",this);
cadre24 = new Sortie("",this);
}
}
class PanneauSud extends Panel
{
Etiquette vide;
public static Checkbox cbg1,cbg2 ;
public static CheckboxGroup cbg ;
public PanneauSud(ActionListener a)
{
setLayout(new GridLayout(1, 3));
vide = new Etiquette("",this);
cbg = new CheckboxGroup();
cbg1 = new Checkbox("jour précédent",cbg ,true);
cbg2 = new Checkbox("jour suivant", cbg, false);
add(cbg1) ;
add(cbg2) ;
setBackground(Color.yellow);
addActionListener(a);
}
}
class PanneauEst extends Panel
{
Bouton ok;
public PanneauEst(ActionListener a)
{
ok = new Bouton("ok",this,a);
setBackground(Color.yellow);
}
}
class PanneauOuest extends Panel
{
Etiquette aujourdui,resultat,vide;
public PanneauOuest(ActionListener a)
{
setLayout(new GridLayout(3,1));
vide = new Etiquette("",this);
aujourdui = new Etiquette(" aujourd'hui ",this);
resultat = new Etiquette(" hier ",this);
setBackground(Color.yellow);
addActionListener(a) ;
}
}
class MonCalendrier extends Frame
{
PanneauCentre panneauCentre;
PanneauSud panneauSud;
PanneauEst panneauEst;
PanneauOuest panneauOuest;
Terminaison terminaison;
EcouteurPlus ecouteurPlus;
private void place()
{
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int he,hf,le,lf;
int Ox,Oy;
he =(int)(d.getHeight());
le = (int)(d.getWidth());hf he/2;lfle/2;Ox le/3; Oy he/3;
setLocation(Ox,Oy);
setSize(lf,hf);
}
public MonCalendrier(String titre)
{
super(titre);
place() ;
setLayout(new BorderLayout());
panneauCentre = new PanneauCentre(ecouteurPlus);
add(panneauCentre,BorderLayout.CENTER);
panneauSud = new PanneauSud();
add(panneauSud,BorderLayout.SOUTH);
panneauEst = new PanneauEst(ecouteurPlus);
add(panneauEst,BorderLayout.EAST);
panneauOuest = new PanneauOuest(ecouteurPlus);
add(panneauOuest,BorderLayout.WEST);
terminaison = new Terminaison(this);
ecouteurPlus = new EcouteurPlus();
panneauEst.ok.addActionListener(ecouteurPlus);
}
}
class TestMonCalendrier
{
static MonCalendrier m;
public static void main(String[]arg)
{
m = new MonCalendrier("mon calendrier");
m.show();
}
}
class Terminaison extends WindowAdapter
{
public Terminaison(Window w)
{
super();
w.addWindowListener(this);
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
class EcouteurPlus implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String jourDeSemaine1,jourDeSemaine2;
String mois1,mois2;
String jour2,annee2 ;
String jour1 , annee1;
CheckboxGroup cbg;
Calendrier hier, demain ;
try
{
jourDeSemaine1 = TestMonCalendrier.m.panneauCentre.cadre11.getSelectedItem();
jour1 = TestMonCalendrier.m.panneauCentre.cadre12.getText();
mois1 = TestMonCalendrier.m.panneauCentre.cadre13.getText();
annee1 = TestMonCalendrier.m.panneauCentre.cadre14.getText();
if (PanneauSud.cbg1 == PanneauSud.cbg.getSelectedCheckbox())
{
jourDeSemaine2 = JourSemaine.precedent(jourDeSemaine1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(jourDeSemaine2);
jour2 = Date.precedente(jour1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(jour2);
mois2 = Date.precedente(mois1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(mois2);
annee2 = Date.precedente(annee1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(annee2);
TestMonCalendrier.m.panneauOuest.resultat.setText("hier");
}
else if(PanneauSud.cbg2 == PanneauSud.cbg.getSelectedCheckbox())
{
jourDeSemaine2 = Calendrier.suivant(jourDeSemaine1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(jourDeSemaine2); jour2 = Calendrier.suivant(jour1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(jour2);
mois2 = Calendrier.suivant(mois1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(mois2);
annee2 = Calendrier.suivant(annee1);
TestMonCalendrier.m.panneauCentre.cadre21.setText(annee2);
TestMonCalendrier.m.panneauOuest.resultat.setText("demain");
}
}
catch (Exception erreur)
{
JOptionPane.showMessageDialog (TestMonCalendrier.m,"le contenu d'un des champs n'est pas correct","erreur de saisie",JOptionPane.ERROR_MESSAGE);
}
}
}
lafoune2
Messages postés26Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention22 juillet 2004 22 mai 2004 à 11:10
va voir la doc sur la classe GregorianCalendar , cette classe te permettera deja de diminuer tes lignes de codes car elle est concue pour gerer les calendriers avec les parametres que tu a a entrer ...
poupoule00
Messages postés2Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention23 mai 2004 23 mai 2004 à 21:21
merci du conseil mais le pb c'est que le partie programmation du calendrier a ete faite en cour donc on est oblige de l'utiliser.
Par contre au niveau del'interface graphique on ajuste un poly d'explication des graphiques.
;)