Il faut que tu t'intéresse à la gestion d'événement en swing. D'après la doc de JCalendar il faut que redéfinisse ton propre DateListener et que tu l'ajoute à ton Jcalendar.
Il faut que tu t'intéresse à la gestion d'événement en swing. D'après la doc de JCalendar il faut que redéfinisse ton propre DateListener et que tu l'ajoute à ton Jcalendar.
autant l'hiver éclate que l'hétéroclite
le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre
Pouvez vous m'aider j'ai essayer avec le code suivant mais ça ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 JCalendar.addMouseListener(new java.awt.event.MouseListener() { public void mouseClicked(java.awt.event.MouseEvent e) { System.out.println("mouseClicked()"); // TODO Auto-generated Event stub mouseClicked() } public void mousePressed(java.awt.event.MouseEvent e) { } public void mouseReleased(java.awt.event.MouseEvent e) { } public void mouseEntered(java.awt.event.MouseEvent e) { } public void mouseExited(java.awt.event.MouseEvent e) { } });
guigui5931 parlait de DateListener, pas de MouseListener.
Salut,
Voila un exemple basique. Tu as un bouton qui permet d'afficher une fenêtre avec le JCalendar. Tu sélectionne la date que tu veux, puis tu clic sur la croix rouge pour fermer la fenêtre. La date s'affiche dans le JLabel.
Il y a d'autres implémentations possibles, comme l'on dit mes petits camarades , mais celle-ci est très simple :
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
61
62
63
64
65
66
67
68
69 import java.awt.BorderLayout; import java.awt.Dialog.ModalityType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingUtilities; import com.toedter.calendar.JCalendar; @SuppressWarnings("serial") public class Test extends JFrame implements ActionListener { private JButton btn = new JButton("*"); private JLabel label = new JLabel("Cliquez sur le bouton pour choisir une date"); public static void main(String[] args) { new Test(); } public Test() { super("Implémeter un JCalendar"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn.addActionListener(this); label.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); add(btn, BorderLayout.WEST); add(label, BorderLayout.CENTER); pack(); setLocationRelativeTo(null); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { /* afficher le calendrier */ JCalendar c = new JCalendar(); // calendrier (JPanel) JDialog d = new JDialog(); // fenêtre d.setTitle("Choisir une date"); d.setModalityType(ModalityType.APPLICATION_MODAL); d.add(c); d.pack(); d.setLocationRelativeTo(Test.this); d.setVisible(true); Date date = c.getCalendar().getTime(); // on récupère la date /* on affiche la date dans le label */ Locale locale = Locale.getDefault(); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, locale); label.setText(dateFormat.format(date)); } }); } }
Merci infiniment c'est cool ton code ça fonction bien, mais j'ai encore quelque problèmes
En effet il faut que la calendrier se close dés que je choisi la date, et c'est pas a moi de le fermer.
Salut,
Tout d'abord, comme certains l'on souligné dans le forum, il faut que tu donnes plus de détail sur l'architecture de ton projet, ta problématique, l'état d'avancement, ce que tu as trouvé et ce que tu ne comprends pas.
Donc par exemple :
"Bonjour,
Je recherche un calendrier en Swing permettant à l'utilisateur de sélectionner une date dans un champ.
J'ai seulement trouvé JCalendar, et je ne sais pas comment l'intégrer dans mon projet. Comment copier la classe dans mon code?"
Et une réponse type:
Salut,
Pour intégrer une librairie dans un projet java, il faut la mettre dans le classpath du projet. Le classpath, ça veut dire pour banaliser dans un endroit de ton projet qui est accessible, soit dans un répertoire de ressources (eclipse ou maven) par exemple.
Quels outils utilises-tu (eclipse, netbean, maven, ant?) ? Quel version de java, quels frameworks?
Tu peux télécharger le jar de la librairie ici : http://www.toedter.com/download/jcalendar-1.3.2.zip
Ensuite, pour l'utiliser, la JavaDoc est ici : http://www.toedter.com/en/jcalendar/api/index.html
Il y a des exemples d'utilisation ici : http://flib.sourceforge.net/JCalendar/doc/examples.html
Voilà, et si ça ne marche pas, pense à bien décrire ton problème, et l'architecture de ton projet.
Mon Calendrier ca marche bien, je veux seulement quand je fais le choix qu'il se ferme immédiatement.
Pour fermer la fenêtre, il faut utiliser la méthode dispose de la fenêtre, il me semble.
Donc à toi de voir comment tu peux étendre le composant, étudie un peu le code.
Bon courage, a+
Il faut vraiment que tu apprenne à chercher des informations tout seul. Tu as composant JDialog que tu veux fermer. Première étape tu va voir la javadoc de JDialog et tu cherche dans les méthode si il y en as une qui permet de fermer la fenêtre. Si par malheur tu ne trouve pas tu va sur google tu tape fermer JDialog et tu trouvera dans les 2 ou 3 premiers lien les informations qu'il te faut.
autant l'hiver éclate que l'hétéroclite
le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre
Je cherche une solution a mon problème pas des lessons. avez vous une solution ?
A nouveau, poste un SSCCE que nous puissions corriger. Nous ne connaissons pas l'état actuel de ton code !
Voila Mon code j'ai déjà testé plusieurs façon mais ça n'a pas marché :
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 private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) { /* afficher le calendrier */ JCalendar c = new JCalendar(); // calendrier (JPanel) jTextField18.setText(""); JDialog d = new JDialog(); // fenêtre d.setTitle("Date choose"); d.setModalityType(ModalityType.APPLICATION_MODAL); d.add(c); d.pack(); d.setLocationRelativeTo(UIMonitor.this); d.setVisible(true); Date date = c.getCalendar().getTime(); // on récupère la date System.out.println(date.toString()); // d.setVisible(false); // d.dispose(); // d.Hide(); /* on affiche la date dans le JTextfield */ Locale locale = Locale.getDefault(); DateFormat dateFormat = DateFormat.getDateInstance( DateFormat.SHORT, Locale.FRANCE); jTextField18.setText(new SimpleDateFormat("dd/MM/yyyy",Locale.FRANCE).format(date)); }avez vous une autre idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // d.setVisible(false); // d.dispose(); // d.Hide();
Ton code n'est ni compilable, ni exécutable !
Ci-dessous un vrai SSCCE basé sur ton code.
Je ne comprends pas où est le problème. Cela semble fonctionner. Une fois la date choisie, il suffit de fermer la fenêtre, et elle s'affiche dans le JTextField. Je ne vois pas comment la fenêtre peut se fermer toute seule : comment saurait-elle quand l'utilisateur a fini de choisir la date ?
Nicolas
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
61
62
63
64
65 import com.toedter.calendar.*; import java.awt.*; import java.awt.Dialog.*; import java.awt.event.*; import java.text.*; import java.util.*; import javax.swing.*; public class TestFrame { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame("Test"); final JTextField jTextField18 = new JTextField("Waiting..."); jTextField18.setColumns(15); JButton jButton10 = new JButton("Push!"); jButton10.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { /* afficher le calendrier */ JCalendar c = new JCalendar(); // calendrier (JPanel) jTextField18.setText(""); JDialog d = new JDialog(); // fenêtre d.setTitle("Date choose"); d.setModalityType(ModalityType.APPLICATION_MODAL); d.add(c); d.pack(); d.setLocationRelativeTo(null); // UIMonitor.this d.setVisible(true); Date date = c.getCalendar().getTime(); // on récupère la date System.out.println(date.toString()); // d.setVisible(false); // d.dispose(); // d.Hide(); /* on affiche la date dans le JTextfield */ Locale locale = Locale.getDefault(); DateFormat dateFormat = DateFormat.getDateInstance( DateFormat.SHORT, Locale.FRANCE); jTextField18.setText(new SimpleDateFormat("dd/MM/yyyy", Locale.FRANCE).format(date)); } }); frame.add(jTextField18, BorderLayout.WEST); frame.add(jButton10, BorderLayout.EAST); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
lorsque je choisi une date je vooderai que la fenetre se ferme directement sans la fermer a la main
La réponse a été donnée en long en large et en travers.
Fermer une fenêtre c'est facile, de plus le JDateChooser se ferme tout seul une fois la date cliquée. Il faudrait voir à faire un minimum d'effort avant de râler sur les personnes qui essaient tant bien que mal de te fournir de l'aide.
Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
De la bonne manière de poser une question (et de répondre).
Je ne fais pas de service par MP. Merci (...de lire les règles...).
Ma page dvp.com
Il y a vraiment quelque chose que je ne comprends pas. Comment veux-tu que la fenêtre sache que tu as fini de choisir la date, alors que le principe même est de pouvoir changer le mois, le jour, l'année ? Comment la fenêtre peut-elle comprendre que tu as fini ta dernière manipulation ?lorsque je choisi une date je vooderai que la fenetre se ferme directement sans la fermer a la main
lorsqu'on clique sur le button de jour il faut que la fenetre se ferme
Tu fais ce que tu veux, mais je te déconseille de concevoir ton application comme cela.
En effet, quand la fenêtre s'ouvre, l'utilisateur peut vouloir choisir le jour d'abord, puis le mois, puis l'année. Si on met en œuvre ce que tu veux, la fenêtre se fermera alors que toute la date n'aura pas été déterminée.
Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
De la bonne manière de poser une question (et de répondre).
Je ne fais pas de service par MP. Merci (...de lire les règles...).
Ma page dvp.com
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