Bonjour à tous,
je suis actuellement en train de développé un calendrier (comme JCalendar) en java pour améliorer mes compétences dans ce langage...
Pour le moment ce que j'ai :
- JFrame principal qui contient mon calendrier
- Le "design" du calendrier
Je vous présente mon code et la ou les questions seront à la fin du post.
Mon début de calendrier est fait de la manière suivante (ce n'est que des tests pour le moment.C'est bidon):
J'ai créer une classe JPanelDay qui hérite de la classe JPanel car je n'arrivais pas à modifier son Background...(setBackground() ne faisait rien)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 calendrier = new JPanelDay[31]; for(int i=0;i<31;i++){ //créer chaque case calendrier[i] = new JPanelDay(""+(i+1)); //ecris le jour dans la case calendrier[i].add(new JLabelDay("" + (i+1), Color.white)); panel_number.add(calendrier[i]); }
Donc lorsque je lance l'application, il instancie la JFrame et un JPanel.
Ce premier JPanel (pan1) possède un BoxBorderLayout. La partie nord de celui possède un JPanel (panel_day) et le centre le JPanel (panel_number).
Le problème ce situe dans le panel_number. Lors de la création de mon calendrier (code du dessus), j'ajoute un JPanelDay à chaque case du GridLayout. Maintenant je voudrais faire une action sur ces JPanel. Par exemple lorsque je clique sur une case, elle l'a colorise (ça fonctionne) mais j'aimerais pouvoir un colorier seulement Une.
Voici l'action que j'utilise sur mes Jpanel du calendrier[]:
Voici ma/mes question(s) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void mouseClicked(MouseEvent e) { Color maCouleur = getBackground(); if((maCouleur.getRed() == 139) && (maCouleur.getGreen() == 137) && (maCouleur.getBlue() == 12)){ setBackground(new Color(205, 201, 165)); } else { setBackground(new Color(139, 137, 12)); } } });
Comment faire pour communiquer l'état d'un JPanel à tous mes JPanel du calendrier, afin de n'avoir seulement qu'une date de selectionnée ?
J'ai réussi à obtenir ce que je voulais en passant calendrier[] en public static. Mais EDIT:je ne pense pas que ce soit la meilleure façon de faire...
J'ai regardé du côté des design patterns, le Observer semble être le bon choix mais je ne suis pas sur, votre avis sur ce DP ?
D'avance je vous remercie pour votre aide !
Partager