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

NetBeans Java Discussion :

Passer les données d'une JTable d'un formulaire à des JtextField d'un autre formulaire


Sujet :

NetBeans Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Passer les données d'une JTable d'un formulaire à des JtextField d'un autre formulaire
    Bonjour,
    J'essaye de faire passer les données d'une JTable d'un JFrame à des JtextField d'un autre JFrame.
    en effet j'ai 2 JFrame: JFrame1 et JFrame2

    Jtable de la Jframe1:
    Matricule Nom Prenom Adresse
    1 xxxx yyyy zzzz
    2 fffff hhhhh aaaaa

    JtextField de la Jframe2
    matricule
    nom
    prenom
    adresse

    je voudrais que quand je clique sur une ligne de la jtable, qu'il m'ouvre la jframe2 en chargeant les données de la ligne cliquée sur les champs correspondants.

    c'est à dire quand je clique sur la ligne de matricule 1, qu'il m'ouvre la deuxieme jframe de cette façon:
    matricule
    1
    nom
    xxxx
    prenom
    yyyy
    adresse
    zzzz

    Merci pour votre aide.

    je vous informe que je parviens déjà à ouvrir mon deuxième jframe en cliquant sur n'importe quelle ligne de la jtable mais mon seul problème c'est qu'il ne charge pas les champs. les champs sont toujours vides.

    je compte vraiment sur votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,
    Citation Envoyé par aliou.developer.com Voir le message
    je vous informe que je parviens déjà à ouvrir mon deuxième jframe en cliquant sur n'importe quelle ligne de la jtable mais mon seul problème c'est qu'il ne charge pas les champs. les champs sont toujours vides.
    Quel code utilise-tu pour faire ça ?

    Normalement, tu devrais utiliser une ListSelectionListener enrregsitré sur le ListSelectionModel de la JTable : dans le valueChanged() si getValueIsAdjusting est false, tu récupère la ligne sélectionnée. Ce qui te permet de récupérer soit l'élément de ton modèle qui correspond (attention à convertir en cas d'utilisation de tri/filtre, par JTable.convertColumnIndexToModel()), soit récupérer directement les valeurs dans les cellules, par JTable.getValueAt(row, column), que tu transferts à ta deuxième frame.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci Joel.drigo pour ta réponse.

    Au faite je n'ai pas utilisé une ListSelectionListener mais plutôt par un getteur (pour accéder aux variables) en passant la jframe1 en paramètre de la jframe2.
    voici le code dont j'ai utilisé:

    Nom : Capture.PNG
Affichages : 2863
Taille : 10,1 Ko

    Pouvez vous me donner davantage d’éclaircissements sur les erreurs dont j'ai fait et me préciser sur quel jframe je doit utilisé quel code.

    je pense aussi que ta réponse sur la ListSelectionListener pourrait résoudre mon problème, si tu peut m'expliquer comment procéder?

    merci encore une fois pour ta disponibilité.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Par exemple, pour aller directement chercher les valeurs dans le modèle (ici sans type particulier : je ne sais pas quel type ont tes colonnes de données, donc j'ai mis Object) (bien sûr avec une classe métier dédiée ce serait bien plus propre et plus facilement utilisable) :

    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
     
    ...
     
    ListSelectionModel selectionModel = table.getSelectionModel(); // on récupère le modèle de sélection de la table
     
    selectionModel.addListSelectionListener(new ListSelectionListener() { // en enregistrer un écouteur sur la sélection
      public void valueChanged(ListSelectionEvent e) {
     
       if ( !e.getValueIsAdjusting() ) { // on ne prend que l'évènement final (il y a des événements intermédiaire de sélection)
     
          int selectedRow = table.convertColumnIndexToModel(table.getSelectedRow()); // l'index de ligne sélectionnée dans le modèle
          Object[] selectedValues = new Object[table.getColumnCount()]; // on créé un tableau pour récupérer les valeurs de colonnes (sans type particulier donc le type Object)
          for (int column = 0; column < table.getColumnCount(); column++) { // on parcourt toutes les colonnes
           selectedValues[column] = (String) table.getValueAt(selectedRow, column); // on copie dans le tableau la valeur correspondant à la ligne et la colonne
          }
     
     
          JFrame frame2 = new JFrame2(selectedValues); // on passe le tableau des données / 
          ...
     
       }
     
      }
     
    });

    Ton code est trop partiel pour en dire grand chose : en plus, je croyais que tu parlais d'envoyer les données vers la frame 2, alors que tu mets une méthode qui récupère le contenu d'un champ de la frame 2 dans la frame 1, donc plutôt pour faire l'inverse.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bien sur que je parlais d'envoyer les données vers la frame 2: Donc de la table vers les champs textfield.

    Entre temps je suis entrain d'appliquer le code que tu m'a donné.

    je voudrais aussi savoir si je le met dans un bloc try catch ou non?

    merci beaucoup.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    salut joel j'ai exécuté ton code en l'adaptant à mon cas et voilà l'erreur que j'ai obtenu.

    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
    run:
    driver etablie
    connexion  base oracle etablie
    connexion  base oracle etablie
    driver etablie
    connexion  base oracle etablie
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
    driver etablie
    	at base.InfosClients$6.valueChanged(InfosClients.java:205)
    	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
    	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:154)
    	at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:685)
    	at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:953)
    	at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1166)
    	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
    	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    	at java.awt.Component.processMouseEvent(Component.java:6505)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    	at java.awt.Component.processEvent(Component.java:6270)
    	at java.awt.Container.processEvent(Container.java:2229)
    	at java.awt.Component.dispatchEventImpl(Component.java:4861)
    	at java.awt.Container.dispatchEventImpl(Container.java:2287)
    	at java.awt.Component.dispatchEvent(Component.java:4687)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    	at java.awt.Container.dispatchEventImpl(Container.java:2273)
    	at java.awt.Window.dispatchEventImpl(Window.java:2719)
    	at java.awt.Component.dispatchEvent(Component.java:4687)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
    	at java.awt.EventQueue.access$200(EventQueue.java:103)
    	at java.awt.EventQueue$3.run(EventQueue.java:682)
    	at java.awt.EventQueue$3.run(EventQueue.java:680)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    	at java.awt.EventQueue$4.run(EventQueue.java:696)
    	at java.awt.EventQueue$4.run(EventQueue.java:694)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
    connexion  base oracle etablie
    BUILD SUCCESSFUL (total time: 29 seconds)

    Voici le code adapté en utilisant ton code

    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
    ListSelectionModel selectionModel = tableClients.getSelectionModel(); // on récupère le modèle de sélection de la table
            selectionModel.addListSelectionListener(new ListSelectionListener(){ // en enregistrer un écouteur sur la sélection
        public void valueChanged(ListSelectionEvent e) {
     
       if (!e.getValueIsAdjusting()) { // on ne prend que l'évènement final (il y a des événements intermédiaire de sélection)
     
          int selectedRow = tableClients.convertColumnIndexToModel(tableClients.getSelectedRow()); // l'index de ligne sélectionnée dans le modèle
          Object[] selectedValues = new Object[tableClients.getColumnCount()]; // on créé un tableau pour récupérer les valeurs de colonnes (sans type particulier donc le type Object)
          for (int column = 0; column < tableClients.getColumnCount(); column++) { // on parcourt toutes les colonnes
           selectedValues[column] = (String) tableClients.getValueAt(selectedRow, column); // on copie dans le tableau la valeur correspondant à la ligne et la colonne
          }
     
         //JFrame InformationsClient = new InformationsClient(selectedValues); // on passe le tableau des données / 
     
       }
      }
            });
    j'ai vu dans ton if(!e.getValueIsAdjusting()) tu n'as pas mis = false

    j'ai aussi commenté la ligne JFrame InformationsClient = new InformationsClient(selectedValues); // on passe le tableau des données / car il le souligne avec un trait rouge donc une erreur


    si je le décommente voici le message donné.
    Nom : Captur.PNG
Affichages : 2926
Taille : 165,7 Ko

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par aliou.developer.com Voir le message
    salut joel j'ai exécuté ton code en l'adaptant à mon cas et voilà l'erreur que j'ai obtenu.
    C'est parce que j'ai laissé un cast en String trainer (parce qu'au début je voulais tout traiter en String et après je me suis dit que tu n'avais pas forcément que de String).

    Donc le problème est juste dans cette ligne (ce que tu te dis d'ailleurs la stacktrace) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selectedValues[column] = (String) tableClients.getValueAt(selectedRow, column);
    Il faut juste supprimer le cast ((String)).



    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
    run:
    driver etablie
    connexion  base oracle etablie
    connexion  base oracle etablie
    driver etablie
    connexion  base oracle etablie
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
    driver etablie
    	at base.InfosClients$6.valueChanged(InfosClients.java:205)
    	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
    	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:154)
    	at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:685)
    	at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:953)
    	at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1166)
    	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
    	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    	at java.awt.Component.processMouseEvent(Component.java:6505)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    	at java.awt.Component.processEvent(Component.java:6270)
    	at java.awt.Container.processEvent(Container.java:2229)
    	at java.awt.Component.dispatchEventImpl(Component.java:4861)
    	at java.awt.Container.dispatchEventImpl(Container.java:2287)
    	at java.awt.Component.dispatchEvent(Component.java:4687)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    	at java.awt.Container.dispatchEventImpl(Container.java:2273)
    	at java.awt.Window.dispatchEventImpl(Window.java:2719)
    	at java.awt.Component.dispatchEvent(Component.java:4687)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
    	at java.awt.EventQueue.access$200(EventQueue.java:103)
    	at java.awt.EventQueue$3.run(EventQueue.java:682)
    	at java.awt.EventQueue$3.run(EventQueue.java:680)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    	at java.awt.EventQueue$4.run(EventQueue.java:696)
    	at java.awt.EventQueue$4.run(EventQueue.java:694)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
    connexion  base oracle etablie
    BUILD SUCCESSFUL (total time: 29 seconds)
    Citation Envoyé par aliou.developer.com Voir le message
    j'ai vu dans ton if(!e.getValueIsAdjusting()) tu n'as pas mis = false
    Oui. Je ne vois pas où tu pourrais mettre = false. Mais si tu parles de e.getValueIsAdjusting()==false, c'est une autre écriture pour celle que j'ai faite.

    Citation Envoyé par aliou.developer.com Voir le message
    j'ai aussi commenté la ligne JFrame InformationsClient = new InformationsClient(selectedValues); // on passe le tableau des données / car il le souligne avec un trait rouge donc une erreur
    Bah, là, il faut bien sûr que tu adaptes ta frame pour passer les informations....

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour Joël,


    Au fait, je t'informe que je n'ai pas que des String dans ma table. les colonnes Matricule et Telephone sont des Integer et les autres des String.

    J'ai supprimé cette ligne, ça ne me renvoie plus le message d'erreur mais je n'ai toujours pas les champs textfield remplis de valeurs correspondant à la ligne cliquée. Je compte vraiment sur ton aide.

    Merci beaucoup.

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par aliou.developer.com Voir le message
    Au faite je t'informe que je n'ai pas que des String dans ma table. les colonnes Matricule et Telephone sont des Integer et les autres des String.
    Oui, j'ai remarqué, vu que le message d'erreur "Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String", dit que tu as aussi des BigDecimal...

    Citation Envoyé par aliou.developer.com Voir le message
    J'ai supprimé cette ligne, ça ne me renvoie plus le message d'erreur mais je n'ai toujours pas les champs textfield remplis de valeurs correspondant à la ligne cliquée.
    J'ai jamais dit de supprimer la ligne, mais seulement le cast en String !

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bon voila le message envoyé en supprimant le cast String

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    run:
    driver etablie
    connexion  base oracle etablie
    connexion  base oracle etablie
    driver etablie
    connexion  base oracle etablie
    driver etablie
    connexion  base oracle etablie
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 8 >= 5
    driver etablie
    connexion  base oracle etablie
    	at java.util.Vector.elementAt(Vector.java:470)
    pourra tu m'expliquer cette ligne Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 8 >= 5 je crois que le problème se trouve à ce niveau.

    Ne pense tu pas aussi que le code que tu m'a envoyé on le met sur un private void tableClientsMouseClicked c'est à dire:

    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
    private void tableClientsMouseClicked(java.awt.event.MouseEvent evt) {                                          
            InformationsClient t = new InformationsClient();
            t.setVisible(true);
     
            ListSelectionModel selectionModel = tableClients.getSelectionModel(); // on récupère le modèle de sélection de la table
            selectionModel.addListSelectionListener(new ListSelectionListener(){ // en enregistrer un écouteur sur la sélection
        public void valueChanged(ListSelectionEvent e) {
     
       if (!e.getValueIsAdjusting()) { // on ne prend que l'évènement final (il y a des événements intermédiaire de sélection)
     
          int selectedRow = tableClients.convertColumnIndexToModel(tableClients.getSelectedRow()); // l'index de ligne sélectionnée dans le modèle
          Object[] selectedValues = new Object[tableClients.getColumnCount()]; // on créé un tableau pour récupérer les valeurs de colonnes (sans type particulier donc le type Object)
          for (int column = 0; column < tableClients.getColumnCount(); column++) { // on parcourt toutes les colonnes
          selectedValues[column] = tableClients.getValueAt(selectedRow, column);// on copie dans le tableau la valeur correspondant à la ligne et la colonne
          }
     
         //JFrame InformationsClient = new InformationsClient(selectedValues); // on passe le tableau des données / 
     
       }
      }
            });
        }
    avec bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InformationsClient t = new InformationsClient();
            t.setVisible(true);
    pour afficher le formulaire suivant.

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    J'ai fait une erreur : il faut que tu remplaces dans mon code convertColumnIndexToModel par convertRowIndexToModel.

    Citation Envoyé par aliou.developer.com Voir le message
    Ne pense tu pas aussi que le code que tu m'a envoyé on le met sur un private void tableClientsMouseClicked c'est à dire:

    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
    private void tableClientsMouseClicked(java.awt.event.MouseEvent evt) {                                          
            InformationsClient t = new InformationsClient();
            t.setVisible(true);
     
            ListSelectionModel selectionModel = tableClients.getSelectionModel(); // on récupère le modèle de sélection de la table
            selectionModel.addListSelectionListener(new ListSelectionListener(){ // en enregistrer un écouteur sur la sélection
        public void valueChanged(ListSelectionEvent e) {
     
       if (!e.getValueIsAdjusting()) { // on ne prend que l'évènement final (il y a des événements intermédiaire de sélection)
     
          int selectedRow = tableClients.convertColumnIndexToModel(tableClients.getSelectedRow()); // l'index de ligne sélectionnée dans le modèle
          Object[] selectedValues = new Object[tableClients.getColumnCount()]; // on créé un tableau pour récupérer les valeurs de colonnes (sans type particulier donc le type Object)
          for (int column = 0; column < tableClients.getColumnCount(); column++) { // on parcourt toutes les colonnes
          selectedValues[column] = tableClients.getValueAt(selectedRow, column);// on copie dans le tableau la valeur correspondant à la ligne et la colonne
          }
     
         //JFrame InformationsClient = new InformationsClient(selectedValues); // on passe le tableau des données / 
     
       }
      }
            });
        }
    NON. Enfin, je sais pas ce que c'est que cette méthode tableClientsMouseClicked, vu que c'est pas dans l'API standard, mais je suppose que c'est appelée par un MouseListener.MouseClicked().
    1. On n'enregistre pas un écouteur de sélection sur clic souris : sinon tu vas en avoir autant que de clic, donc ça va ouvrir autant de formulaire
    2. On ne gère pas l'interaction avec la JTable avec des clics souris : il y a une gestion évenementielle dédiée (des éventements de sélection)
    3. Le code doit être mis là on créé la JTable, juste après l'avoir créé, une seule fois



    avec bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InformationsClient t = new InformationsClient();
            t.setVisible(true);
    pour afficher le formulaire suivant.
    Il faut bien évidemment que tu passes les données collectées par la boucle que je t'ai donnée à la fenêtre, sinon elle ne risque pas de les afficher.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour Joel,

    Je n'ai toujours pas réussi à passer ce cap, mais je suis passé par une autre solution qui consiste à rassembler la jtable et les jtextfied dans un même formulaire avec les tab.

    J'ai fait un formulaire avec 2 tabs. le premier comporte la jtable rempli de ces données et le deuxième les textfieds. Si on clique sur une ligne de la jtable il met directement les données dans les champs des textfields correspondants et là tu peut basculer sur le tab des textfields pour voir les données.

    Je crois, le fait que le nom des champs des textfields ne soient pas dans le formulaire de la jtable a causé ce problème.

    Néanmoins je continue à cogiter sur ta solution qui me semble vraiment idéale et si je parviendrai à le faire, je la partagerai sur ce site.

    Merci encore une fois pour le minimum de ton temps que tu m'a donné.

Discussions similaires

  1. [Objective-C] Passer les données dans une autre classe
    Par SigmaPi dans le forum Objective-C
    Réponses: 1
    Dernier message: 25/02/2015, 13h00
  2. Passer les données d'une base à une autre
    Par 4rocky4 dans le forum Access
    Réponses: 3
    Dernier message: 18/03/2008, 19h30
  3. Transférer les données d'une JTable vers une autre
    Par rollbich dans le forum Composants
    Réponses: 4
    Dernier message: 19/01/2006, 23h22
  4. [JTABLE]trier et filtrer les données d'une jTable
    Par mehdi82 dans le forum Composants
    Réponses: 4
    Dernier message: 15/12/2005, 17h59

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