IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

[Swing] Calendrier en Java


Sujet :

Java

  1. #21
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    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

  2. #22
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    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) {
    				}
    			});

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    guigui5931 parlait de DateListener, pas de MouseListener.

  4. #24
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    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));
    			}
    		});
    	}
    }

  5. #25
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    Merci infiniment c'est cool ton code ça fonction bien, mais j'ai encore quelque problèmes

  6. #26
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    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.

  7. #27
    Invité
    Invité(e)
    Par défaut
    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.

  8. #28
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    Mon Calendrier ca marche bien, je veux seulement quand je fais le choix qu'il se ferme immédiatement.

  9. #29
    Invité
    Invité(e)
    Par défaut
    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+

  10. #30
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    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

  11. #31
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    Je cherche une solution a mon problème pas des lessons. avez vous une solution ?

  12. #32
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    A nouveau, poste un SSCCE que nous puissions corriger. Nous ne connaissons pas l'état actuel de ton code !

  13. #33
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    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));
     
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //   d.setVisible(false);
            //	 d.dispose();
    		//   d.Hide();
    avez vous une autre idée ?

  14. #34
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    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);
                }
            });
        }
    }

  15. #35
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    lorsque je choisi une date je vooderai que la fenetre se ferme directement sans la fermer a la main

  16. #36
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    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

  17. #37
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    lorsque je choisi une date je vooderai que la fenetre se ferme directement sans la fermer a la main
    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 ?

  18. #38
    Provisoirement toléré
    Homme Profil pro
    Développeur JAVA JEE / PHP
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur JAVA JEE / PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 72
    Points
    72
    Par défaut
    lorsqu'on clique sur le button de jour il faut que la fenetre se ferme

  19. #39
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    Par défaut
    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.

  20. #40
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Nicolas_75 Voir le message
    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.
    Là je ne suis pas d'accord. Un jour dans un calendrier n'a pas forcément de sens sans la notion de mois/année.
    JDateChooser de JCalendar se ferme lors de la sélection du jour, il faut choisir mois et année avant. Tout calendrier popup fonctionne d'ailleurs sur ce principe.
    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

Discussions similaires

  1. [Jcalendar] construire un agenda /calendrier avec java.
    Par Battant dans le forum Composants
    Réponses: 3
    Dernier message: 08/06/2010, 11h57
  2. Calendrier graphique java
    Par projet16 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 22/11/2007, 11h27
  3. calendrier en java
    Par le_tigre_est_en_toi dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 29/12/2006, 19h38
  4. Calendrier en Java
    Par r-o-m-z dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/10/2006, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo