Bonjour,
Petite question rapide :
J'ai un listener qui me permet d'ouvrir un calandrier (JCalandar), Comment faire pour qu'il n'en n'ouvre qu'un a la fois???
Merci
Bonjour,
Petite question rapide :
J'ai un listener qui me permet d'ouvrir un calandrier (JCalandar), Comment faire pour qu'il n'en n'ouvre qu'un a la fois???
Merci
Conserver une référence dessus et la nullifier quand il est refermé et tester la référence est null ou pas avant d'en ouvrir un autre. Ou la même chose avec un boolean à true ou false...
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
C'est ce que j'avai esseyé de faire avec un boolean mais je n'arrive pas a savoir si la fenetre est active ou pas.
J'ai bien tenté isactive mais ca me renvoi toujour false.
et isShowing() ? Pas possible de mettre un WindowListener sur le dialog ou la fenêtre ?
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
je precise je suis sur netbeans
le listener est :
isShowing() marche bien mais le problem c'est que je ne voit pas trop comment lui dire lorsque la fenetre du calandrier est fermet il peu en ouvrir un autre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 requExeDate.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { dateCalendar(evt); } });
peut etre que je devrai creer la frame dans le MouseListener, puis l'envoyer dans dateCalendar, pour ensuite tester son ouverture/fermeture
Bien sur ca ne peu pas marché vu que je recreer la frame a chaque foi que je clique dans la zone de la date...
je suppose que tu as utiliser un boolean tel que
après lors du fermeture de ton JClalender ( evenement closing )tu fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void mouseClicked(java.awt.event.MouseEvent evt) { if(! calander_ouvert ) { ton_calender.sertVisible(true); calander_ouvert = true; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2calander_ouvert = false;
oui c'est plus ou moins ce que j'ai esseyé de faire
Mais le problem c'est que dans la fonction dateCalendar, je n'arrive pas a lui dire lorsque la fenetre ferme mettre " calendarOpen = true "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 requExeDate.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { JFrame frame = new JFrame("Calendar"); if(calendarOpen) dateCalendar(evt,frame); } });
Tu as parlé de "evenement closing" je ne voi pas trop pourrai tu developper STP
c'est quoi le role de cette méthode ?
...
tu as l'objet frame de type JFrame je suppose , alors tu lui associe un listener
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { // quand la fenêtre est entrain de se fermer mettre la varibale a false calander_ouvert = false; } } );
dateCalendar(evt,frame);
C'est la methode qui me permet de creer un calendrier en utilisant JCalandar. Ca m'ouvre une frame
Au faite ca marche mais pour cela il faut que je passe mon code sur Eclipse car avec netbeans une partie du code est bloqué (J'ai des interface que j'ai generé automatiquement avec netbeans)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 private void dateCalendar(java.awt.event.MouseEvent evt) { JFrame frame = new JFrame("Calendar"); frame.setIconImage(image); final JCalendar dateChooser = new JCalendar(); frame.add(dateChooser); frame.pack(); calendarOpen = false; // When click the textFiled // Initialize the date as today final Date date = dateChooser.getCalendar().getTime(); requExeDate.setText(new SimpleDateFormat("yyMMdd", Locale.ENGLISH).format(date)); // Locale locale = Locale.getDefault(); // DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRANCE); // Monitor the change of date property dateChooser.addPropertyChangeListener(new PropertyChangeListener() { //@Override public void propertyChange(PropertyChangeEvent e) { // get current year, month and day int year = dateChooser.getYearChooser().getYear(); int month = dateChooser.getMonthChooser().getMonth() + 1; int day = dateChooser.getDayChooser().getDay(); // make the new date in format of // year/month/day // this format is obligatoire. String sDate = new Integer(year).toString() + "/" + new Integer(month).toString() + "/" + new Integer(day).toString(); Date newDate = new Date(sDate); // set the new Date requExeDate.setText(new SimpleDateFormat("yyMMdd", Locale.ENGLISH).format(newDate)); } }); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { // quand la fenêtre est entrain de se fermer mettre la varibale a false calendarOpen = true; } } ); if (calendarOpen){ //frame.add(requExeDate, BorderLayout.WEST); frame.setLocationRelativeTo(null); // pour centrer frame.setVisible(true);} } }
j'ai rajouté ca dans le listener
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 requExeDate.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { JFrame frame = new JFrame("Calendar"); if (calendarOpen) dateCalendar(evt, frame); } });
avant tous , ca marche ou il ya encore un problème ?
je comprend mais il ya 2 argumentdans la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part evt ,frame
et je comprend pas pourquoi tu met evt qui est de type java.awt.event.MouseEvent comme paramétre
evt a ete generer automatiquement par netbeant. (J'ai eut la flemme de l'enlevé)
Si non Ca marche maintenant aussi bien pour eclipse que pour Netbeans
Merci Beaucoup
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 private void dateCalendar(java.awt.event.MouseEvent evt) { JFrame frame = new JFrame("Calendar"); //Si il n'y a pas de calendrier ouvert on continue if (calendarOpen) { frame.setIconImage(image); final JCalendar dateChooser = new JCalendar(); frame.add(dateChooser); frame.pack(); calendarOpen = false; // When click the textFiled // Initialize the date as today final Date date = dateChooser.getCalendar().getTime(); requExeDate.setText(new SimpleDateFormat("yyMMdd", Locale.ENGLISH).format(date)); // Locale locale = Locale.getDefault(); // DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRANCE); // Monitor the change of date property dateChooser.addPropertyChangeListener(new PropertyChangeListener() { //@Override public void propertyChange(PropertyChangeEvent e) { // get current year, month and day int year = dateChooser.getYearChooser().getYear(); int month = dateChooser.getMonthChooser().getMonth() + 1; int day = dateChooser.getDayChooser().getDay(); // make the new date in format of // year/month/day // this format is obligatoire. String sDate = new Integer(year).toString() + "/" + new Integer(month).toString() + "/" + new Integer(day).toString(); Date newDate = new Date(sDate); // set the new Date requExeDate.setText(new SimpleDateFormat("yyMMdd", Locale.ENGLISH).format(newDate)); } }); //frame.add(requExeDate, BorderLayout.WEST); frame.setLocationRelativeTo(null); // pour centrer frame.setVisible(true); } frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { // quand la fenêtre est entrain de se fermer mettre la varibale a false calendarOpen = true; } }); }
Tu ne préfère pas utiliser un JDialog modal plutot qu'une JFrame ?
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager