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

Composants Java Discussion :

Recuperer une ligne dans un jtable pour inseret dans un autre jtable


Sujet :

Composants Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Recuperer une ligne dans un jtable pour inseret dans un autre jtable
    Bonjour,
    Étant novice en java je viens demander de l'aide.
    J'ai une fenêtre avec deux tableaux et un bouton insert, je sélectionne une ligne dans le jTable1 pour l'ajouter dans le deuxième jTable2 ça fonctionne
    mais quand je fais une recherche dans le premier jTable1 (grâce a un filtre avec un jTextField) pour trouver une personne le premier tableaux fais biens la recherche et affiche les personne rechercher en question mais quand je sélectionne dans le premier jTable1 pour ensuite l'ajouter au deuxième jTable2 la recherche n'est pas pris en compte du coup je me retrouve avec un mauvais résultat c'est-a-dire que quand je sélectionne un personne et que je l’insert dans le deuxième jtable2 je retrouve avec la même personne comme si j'avais fais aucune recherche comment je peux faire.

    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
     
    //filtre de recherche
     
        private void filtreNom() {
            TableRowSorter<TableModel> rowSorter = new TableRowSorter<>(table.getModel());
            table.setRowSorter(rowSorter);
            String filterValue = rNom.getText().trim();
    	if (filterValue.isEmpty()) {
                rowSorter.setRowFilter(null);
    	}else {
                RowFilter<Object, Object> filter = new RowFilter<Object, Object>() {
                public boolean include(RowFilter.Entry<? extends Object, ? extends Object> entry) {
                    String name = (String) entry.getValue(0); // colonne nom
                    return startsWithIgnoreCase(name, filterValue);
                }
        private boolean startsWithIgnoreCase(String string, String prefix) {
    	return string.toLowerCase().startsWith(prefix.toLowerCase());
        }
                };
    	rowSorter.setRowFilter(filter);
    	}
     
        }
     
     
    //bouton insert pour le deuxième jTable
     
    private void insertActionPerformed(java.awt.event.ActionEvent evt) {                                       
            TableModel model1 = table.getModel();
            int[] indexs = table.getSelectedRows();
            Object[] row = new Object[5];
            DefaultTableModel model2 = (DefaultTableModel) table2.getModel();
            for(int i = 0; i < indexs.length; i++)
            {
                row[0]= model1.getValueAt(indexs[i], 0);
                row[1]= model1.getValueAt(indexs[i], 1);
                row[2]= model1.getValueAt(indexs[i], 6);
                row[3]= model1.getValueAt(indexs[i], 7);
                row[4]= model1.getValueAt(indexs[i], 13);
     
                model2.addRow(row);
            }
     
     
        }

  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 : 54
    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,

    Le modèle définit les données de la JTable : les informations sont indexées par lignes et colonnes dans ce modèle.

    La JTable affiche une version transformée du modèle. Tranformée par les filtres, les tris, etc.

    Ainsi, tu peux avoir 3 lignes dans le modèle :
    Colonne 0 Colonne 1
    Ligne 0 A B
    Ligne 1 C D
    Ligne 2 E F

    et ta table affiche ces données de manière complètement différente :

    Colonne 0 Colonne 1
    Ligne 0 F E
    Ligne 1 B A

    La ligne 0 dans la table correspond à la ligne 2 dans le modèle. La colonne 0 dans la table correspond à la colonne 1 dans le modèle.

    Tu ne peux donc pas prendre des index relatifs à la table pour accéder aux données correspondantes dans le modèle. L'index de ligne sélectionnée dans la table en fait partie.

    Pour gérer ça tu as quatre méthodes dans la classe JTable :
    • convertRowIndexToView
    • convertRowIndexToModel
    • convertColumnIndexToView
    • convertColumnIndexToModel


    Ces méthodes permettent de convertir un index d'un contexte vers l'autre. Celles qui contiennent "RowIndex" servent à convert l'index de ligne, et celles qui contiennent "ColumnIndex", l'index de colonne. Celles qui contiennent "toView" permettent une conversion du contexte "modèle" vers le contexte "vue", donc JTable, et celles qui contiennent "toModel" permettent une conversion du context "vue" (donc JTable) vers le contexte "modèle".

    Avec l'exemple que je t'ai montré ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int tableIndex=0;
    int modelIndex = table.convertRowIndexToModel(tableIndex);
    System.out.println(modelIndex);
    va afficher 2.

    Tu peux également accéder directement aux données via l'instance de JTable, par les index de vue. Le nom des méthodes sont les mêmes.
    Ainsi correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.getModel().getValueAt(2,1);
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/12/2015, 20h22
  2. Réponses: 12
    Dernier message: 05/11/2010, 17h58
  3. recuperer une ligne dans un tableau
    Par jakcam dans le forum SQL
    Réponses: 1
    Dernier message: 04/03/2008, 11h35
  4. Ajout de d'une ligne et d'un champ input dans un tableau
    Par zetta dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/11/2005, 10h45
  5. Réponses: 4
    Dernier message: 24/09/2005, 09h52

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