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 :

[JTable] filtrer les données


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 99
    Par défaut [JTable] filtrer les données
    Bonjour,

    je souhaite filtrer les données d'une JTable au moyen d'un JComboBox. Cependant, j'aimerais utiliser le modèle MVC, donc masquer uniquement les lignes non désirées. Cela est-il possible? Ou dois-je récupérer à nouveau mes données ("filtrées") dans ma base de données.

    Merci.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Sur un problème similaire, j'ai utiliser le design pattern decorator, afin de ne pas modifier mon model de base.
    Dans le principe, j'avais créer un nouveau model, contenant un tableau de booléens aussi grand que la taille du tableau dans le modèle décoré. Le JComboBox modifie ensuite le modèle décorateur.
    Dans les surcharges des méthodes pour le décorateur, "getRowCount" prend en compte les valeurs booléennes, et "getValueAt" ignore les lignes à ne pas prendre en compte.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 99
    Par défaut
    Tout d'abord, merci pour la réponse.

    Ensuite, je voulais savoir si il était possible par ce moyen de modifier les valeur de mes données : vais-je retrouver la correspondance entre les lignes si le modèle est filtré?

    Merci

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par nanourene Voir le message
    Ensuite, je voulais savoir si il était possible par ce moyen de modifier les valeur de mes données : vais-je retrouver la correspondance entre les lignes si le modèle est filtré?
    Je ne comprend pas bien ta question. Avec un exemple, ce serait plus clair.
    Avant filtrage :
    ligne 1 : a
    ligne 2 : b
    ligne 3 : a
    ligne 4 : b

    Après filtrage (suppression des b):
    ligne 1 : a
    ligne 2 : a

    Il n'est pas question, après filtrage, de conserver la numérotation 1 et 3 pour les "a". Les "b" ont disparus du point de vue du modèle, ils sont filtrés.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 99
    Par défaut
    Les données de ma JTable sont stockées dans un vecteur de vecteur (Vecteur<Vecteur>).

    Si je filtre ma JTable, les données dans mon vecteur restent inchangées, par contre pas celle de la JTable.

    Un petit exemple :

    ComboBoxFiltre : Tous
    ligne 1 -> a | val1
    ligne 2 -> b | val2
    ligne 3 -> a | val3
    ligne 4 -> b | val4

    ComboBoxFiltre : a
    ligne 1 -> a | val1
    ligne 2 -> a | val3

    Modification dans la JTable
    ComboBoxFiltre : a
    ligne 1 -> a | val1
    ligne 2 -> a | nouvelle valeur


    Et maintenant, si je reviens en situation de départ, j'obtiens :
    ComboBoxFiltre : Tous
    ligne 1 -> a | val1
    ligne 2 -> b | val2
    ligne 3 -> a | nouvelle valeur
    ligne 4 -> b | val4

    ou alors

    ComboBoxFiltre : Tous
    ligne 1 -> a | val1
    ligne 2 -> b | nouvelle valeur
    ligne 3 -> a | val3
    ligne 4 -> b | val4

    Merci.

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Je ne comprend pas ce que tu ne comprends pas
    La JTable ne contient aucune donnée. Toute modification via la JTable se trouve reportée dans le modèle. La notion de numéro de ligne dans la JTable n'a d'intérêt que pour l'utilisateur. En "interne", à l'insu du plein gré de l'utilisateur, les modifications se feront sur les bonnes lignes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 99
    Par défaut
    Ok, merci beaucoup

  8. #8
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 64
    Par défaut
    Bonjour;
    J'ai trouver ce poste, je sais qu'il est ancien mais il n'ai jamais trop tard pour bien faire.
    Ben l'idée est que tu peux utiliser une méthode simple et efficace.

    le principe est simple, vider la table et la remplir une autre fois avec les données filtrées, voici le 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
    18
    19
    20
    21
    22
    23
    24
    25
     
    //très important de prendre une copie de vector qui contient les données du JTable
    v_copi_item_desc_model_pf=v_jtable_data.clone;
     
    //vider le contenu de la Jtable
    model_de_la_table.getDataVector().removeAllElements();
    model_de_la_table.fireTableDataChanged();
     
    //déclarer les vecteur qui vont acquérir les données filtrées.
    Vector vector_a_filtrer=v_copi_item_desc_model_pf;
    Vector nouveau_vector_apres_filtre=new Vector();
     
    for(int i=0; i<vector_a_filtrer.size(); i++)
    {
    //récupérer les ligne une par une
    Vector v_ligne_search=(Vector) vector_a_filtrer.get(i);
     
    //   v_ligne_search.get(0) veux dire que le filtre est sur la première colonne du jtable   
     if(v_ligne_search.get(0).toString().toUpperCase().contains(valeur_du_filtre.toUpperCase()))
             {
               //Si la première colonne (v_ligne_search.get(0)) contient la valeurs du filtre (valeur_du_filtre)
                 nouveau_vector_apres_filtre.add(v_ligne_search);
                 model_de_la_table.addRow(v_ligne_search);
                }
            }

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

Discussions similaires

  1. Filtrer les données reçues
    Par cryborg dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 20/07/2006, 17h36
  2. SQL*Loader : filtrer les données chargées
    Par gattaca dans le forum Oracle
    Réponses: 2
    Dernier message: 13/07/2006, 10h51
  3. [JTable] modifier les données à postériori
    Par SheikYerbouti dans le forum Composants
    Réponses: 4
    Dernier message: 09/02/2006, 13h19
  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, 18h59
  5. [JTable] Changer les données
    Par norkius dans le forum Composants
    Réponses: 12
    Dernier message: 27/01/2005, 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