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 :

Afficher ligne par ligne


Sujet :

Java

  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut Afficher ligne par ligne
    bonjour,
    je cherche comment afficher ligne par ligne d'une jtable dans des zones de text , mon code suivant m'affiche la 1ere ligne de jtable :
    je veux qu'à chaque fois je clique sur le bouton "précédent" je passe à la ligne précédente et qu'elle s'affiche dans les zone de text...

    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
      private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            for (int i = 0 ; i<ta1.getModel().getRowCount(); i++)
            {
                {
                jNom.setText(String.valueOf(model.getValueAt(ta1.getSelectedRow()-i,0)));     
                jPrenom.setText(String.valueOf(model.getValueAt(ta1.getSelectedRow()-i,1)));
                cbDN.setText(String.valueOf(model.getValueAt(ta1.getSelectedRow()-i,2)));
                cbGrade.setSelectedItem(String.valueOf(model.getValueAt(ta1.getSelectedRow()-i,3)));   
                jLabel7.setText(String.valueOf(model.getValueAt(ta1.getSelectedRow()-i,4)));
                 if(jLabel7.getText() =="F")
            {
                radio1.setSelected(true);
            }
            else    radio2.setSelected(true);
                jEmail.setText(String.valueOf(model.getValueAt(ta1.getSelectedRow()-i,5)));
            }
            }
        }

    merci de m'aider

  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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ton code n'affiche pas la première ligne : il fonctionne grace à des circonstances extraordinaires, parce que la ligne affichée est celle dont l'index correspond à ta1.getSelectedRow()-i. A priori je dirai, que la ligne sélectionnée actuelleement est la dernière.

    Ensuite, le problème est de déterminer ce que signifie "passer à la ligne suivante" : ceci signifie qu'on ait une référence d'une ligne, et qu'on modifie cette référence pour passer à la ligne suivante. On peut utiliser la sélection de lignes déjà implémentées dans la JTable, et modifier cette sélection par code, mais cela peut être génant par rapport à la sélection que l'utilisateur fait : elle va changer au vu de l'utilisateur, ce qui pourra l'agacer. Ou alors il faut que le bouton soit clairement associé à une fonction qui le fait. On peut utiliser une variable qui représente un index, qu'on incrémente, mais il s'agit d'un état relativement inconsistant, parce qu'il ne varie pas dans une boucle isolée, mais par un bouton, il serait inconsistant, puiqu'il dépendrait du nombre de fois qu'on clique sur le bouton (pour peu qu'on puisse supprimer des lignes dans la JTable, et ça pourrait faire n'importe quoi).

    Si tu te fondes sur la sélection, il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         int index = ta1.getSelectedRow();
         if ( index>=0 ) { // si une ligne est sélectionnée
                jNom.setText(String.valueOf(model.getValueAt(index,0)));     
                /* ... */
                index++; // on passe à la ligne suivante
                if ( index<ta1.getModel().getRowCount() ) { // si la ligne suivante existe bien
                      ta1.getSelectionModel().setSelectionInterval(index, index); // on change la sélection
                }
         }
         /* ... */
    Accessoirement, on ne compare pas des chaines avec == mais avec equals() !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut
    merci , ça marche mais la navigation dans les ligne du jTable n'est po synchronisé avec le changement des jtext.

  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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kagami Voir le message
    merci , ça marche mais la navigation dans les ligne du jTable n'est po synchronisé avec le changement des jtext.
    Ok, tu voudrais que les données de la ligne sélectionnée soit affichée, et non pas, ce que j'ai fait, afficher les données de la ligne sélectionnéee et passer à la suivante. Dans ce cas, il serait mieux de séparer affichage de la sélection et navigation : l'avantage, c'est que la sélection directe dans la JTable fonctionnera aussi.

    Donc pour l'affichage sur sélection (juste après avoir créer la jtable):

    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
    ta1=new JTable(/*...*/);
     
    ta1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
     
        @Override
        public void valueChanged(ListSelectionEvent e) {
             if ( !e.getValueIsAdjusting() ) {
                   int index = ta1.getSelectedRow(); 
                   if (index>=0 ) {
    	          jNom.setText(String.valueOf(model.getValueAt(index,0)));     
                      /* ... les autres champs */
                  }	
    	 }
        }
    });
    Et dans le bouton, ne faire que le changement de sélection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         int index = ta1.getSelectedRow();
         if ( index>=0 ) { // si une ligne est sélectionnée
                index++; // on passe à la ligne suivante
                if ( index<ta1.getModel().getRowCount() ) { // si la ligne suivante existe bien
                      ta1.getSelectionModel().setSelectionInterval(index, index); // on change la sélection
                }
         }
    }
    Pour reculer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int index = ta1.getSelectedRow();
         if ( index>1 ) { // si une ligne est sélectionnée
                index--; // on passe à la ligne suivante
                ta1.getSelectionModel().setSelectionInterval(index, index); // on change la sélection
         }
    Pour sélectionner directement la première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         if ( ta1.getModel().getRowCount()>0 ) {
                ta1.getSelectionModel().setSelectionInterval(0,0); // on change la sélection
         }
    Pour sélectionner directement la dernière ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         if ( ta1.getModel().getRowCount()>0 ) {
              int index = ta1.getModel().getRowCount()-1;
              ta1.getSelectionModel().setSelectionInterval(index,index); // on change la sélection
         }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut
    bonjour , je tiens à vous remercier pour votre aide , en ce qui concerne le bouton qui sélectionne directement la première ligne il faut que je clique deux fois (pas obligé double-clique , clique normal)pour que la 1ere ligne sois sélectionnée !!

  6. #6
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kagami Voir le message
    en ce qui concerne le bouton qui sélectionne directement la première ligne il faut que je clique deux fois (pas obligé double-clique , clique normal)pour que la 1ere ligne sois sélectionnée !!
    Etrange. Tu peux nous montrer ton code final ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut
    sélectionner la 1ere ligne après un double clique :

    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
    if ( ta1.getModel().getRowCount()>0 ) { 
                     int index = ta1.getSelectedRow();
     
                     jNom.setText(String.valueOf(model.getValueAt(index,0)));      
                    jPrenom.setText(String.valueOf(model.getValueAt(index,1)));     
                    cbDN.setText(String.valueOf(model.getValueAt(index,2)));     
                    cbGrade.setSelectedItem(String.valueOf(model.getValueAt(index,3)));     
                    jLabel7.setText(String.valueOf(model.getValueAt(index,4))); 
                    jEmail.setText(String.valueOf(model.getValueAt(index,5)));  
                    if(jLabel7.getText() =="F")
                        {
                            radio1.setSelected(true);
                        }
                    else    radio2.setSelected(true);  
                ta1.getSelectionModel().setSelectionInterval(0,0); // on change la sélection
         }

  8. #8
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Double-clic ? Sur quoi ? Un bouton ? La JTable ? Il est où ce code que tu montres ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut
    c 'est le code du bouton qui sélectionn la 1ere ligne et l'affiche dans les jtexts..

  10. #10
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Ok, je vois : il faut faire la sélection avant de lire la sélection :

    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
     
    if ( ta1.getModel().getRowCount()>0 ) { 
                int index=0;
                ta1.getSelectionModel().setSelectionInterval(index,index); // on change la sélection
                     jNom.setText(String.valueOf(model.getValueAt(index,0)));      
                    jPrenom.setText(String.valueOf(model.getValueAt(index,1)));     
                    cbDN.setText(String.valueOf(model.getValueAt(index,2)));     
                    cbGrade.setSelectedItem(String.valueOf(model.getValueAt(index,3)));     
                    jLabel7.setText(String.valueOf(model.getValueAt(index,4))); 
                    jEmail.setText(String.valueOf(model.getValueAt(index,5)));  
                    if(jLabel7.getText() =="F")
                        {
                            radio1.setSelected(true);
                        }
                    else    radio2.setSelected(true);  
         }
    Mais il ne faudrait faire (comme je t'ai déjà dit) que la sélection, et faire l'affichage dans l'évenement de sélection, pour éviter de duppliquer tout ce code dans chaque bouton d'une part, et d'autre part pour que ça fonctionne de façon générale (y compris lorsqu'on sélectionne par un autre moyen que les boutons).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut
    merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher contenu textbox ligne par ligne
    Par sdispro dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/08/2012, 00h45
  2. Afficher valeur Split ligne par ligne d'un fichier.
    Par jamsgoodon dans le forum Débuter
    Réponses: 0
    Dernier message: 31/01/2011, 18h19
  3. Afficher un texte ligne par ligne
    Par renaud26 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 23/03/2010, 13h22
  4. afficher un tableau ligne par ligne
    Par zangaloni dans le forum EDT/SwingWorker
    Réponses: 4
    Dernier message: 06/05/2009, 21h09
  5. [MySQL] Afficher les données ligne par ligne
    Par the watcher dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/02/2009, 17h50

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