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] problème filtrage sur plusieurs table


Sujet :

Composants Java

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut [JTable] problème filtrage sur plusieurs table
    Bonjour à vous développeurs chevronnés


    Avant de poser mon problème, mettons nous en situation.


    Dans le cadre de mon projet, je dois ouvrir et lire des fichiers textes contenant des bytes que je dois traiter ---> jusque là tout va bien.

    Dans mon conteneur, j'affiche ma JTable et 2 boutons de navigation qui me permettent de changer de fichier. --> jusque là, tout va bien aussi.
    La relecture se fait donc après le clique sur l'un ou l'autre bouton, respectivement "Précédent" et "Suivant" - vous voyez le genre de navigation.


    Ensuite, je souhaite filtrer les données de la table affichée en fonction d'une JComboBox. Et là, des phénomènes étranges arrivent.


    Premièrement, lorsque j'ouvre mon fichier initial, mon filtre ne fonctionne pas. Je dois changer le fichier et revenir dessus pour "activer" le filtre.
    Je pense qu'il y a problème lors de l'initialisation (cf code en fin de post).


    Secondo, j'arrive à filtrer mes données grâce à la comboBox selon mes critères imposés via un regexFilter. Cependant, je n'arrive pas à trouver la bonne expression régulère pour afficher la table "d'origine" dépourvue de filtrage.
    J'ai essayé: "*", ".*", " " ...


    Pour finir, j'ai un souci entre mon modèle et ma relecture de fichier. En effet, lorsque j'effectue un filtre sur le fichier X qui me renvoie, par exemple, 20 lignes, lorsque je change de fichier, j'ai une erreur qui m'indique le out of bound Exception. Et si je n'ai pas d'erreur et que mon filtre sur le fichier X me renvoie 4 valeurs, ben sur le fichier suivant, j'affiche que 4 valeurs bien que j'ai 10 fois plus de lignes à lire.


    Pour complèter mon post, voici quelques lignes de codes:

    Mon itialisation de ma table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     model = new MyTableModel(createDataTable(readIntByte.readByte()));
            sorter = new TableRowSorter<MyTableModel>(model);
            tableEvent = new JTable(model);
            tableEvent.setRowSorter(sorter);
            //Design du tableau
            tableEvent.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
            tableEvent.setAutoCreateRowSorter(true);

    Mon filtre, établit grâce au site de sun, mais adapté à mes besoins:
    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
    private void newFilter() {
            RowFilter<MyTableModel, Object> rf = null;
     
            //If current expression doesn't parse, don't update.
            try {
                if (choixSelect.equals("Tous")) {
                    rf = RowFilter.regexFilter(".*", 1);
                } else {
                    rf = RowFilter.regexFilter(choixSelect, 1);
                }
            } catch (java.util.regex.PatternSyntaxException e) {
                return;
            }
     
            sorter.setRowFilter(rf);
        }

    et pour finir, ma relecture:
    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
     private void refreshData() {
     
            //Mise à jour du fichier + affichage
            System.out.println("REFRESH DATA TABLE EVENT<<<<<<<<<<<<<<<<<<<<<<");
            tableEvent.removeAll();
            //Lecture du fichier
            System.out.println("EVENT : lecture de " + FILENAME);
            readIntByte = new TAFTPReadByte(URL, FILENAME, FILE_SIZE);
            model.setData(createDataTable(readIntByte.readByte()));
            //Creation de la table
            tableEvent.setModel(model);
            tableEvent.setRowSorter(sorter);
            tableEvent.validate();
            tableEvent.repaint();
            scrollPane.validate();
            scrollPane.repaint();
    }
    En espérant que vous pourrrez m'éclaircir les idées


    MustOne
    MustOne -

    Qui aime Java, mais qui galère à comprendre les subtilités....ou à comprendre tout court
    citation: "ce n'est pas parce qu'on aime un arbre, qu'on ne peut pas contempler la forêt", à rétorquer si votre conjoint(e) vous reproche de trop "mater"

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut Un problème de réglé
    Bonjour,


    J'ai réglé un problème: celui de remettre mon tableau d'origine. En fait je conditionnais mon regex à 2 endroits différents - le ActionListener et dans la méthode newFilter(). Erreur de débutant.
    Pour info, j'ai mis "" dans mon regexFilter.


    Il m'en reste plus que 2. Les avis sont les bienvenus. Je peux éventuellement ajouter des précisions si vous en avez besoin pour soumettre une idée.
    MustOne -

    Qui aime Java, mais qui galère à comprendre les subtilités....ou à comprendre tout court
    citation: "ce n'est pas parce qu'on aime un arbre, qu'on ne peut pas contempler la forêt", à rétorquer si votre conjoint(e) vous reproche de trop "mater"

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut Encore un autre problème de réglé
    Coucou,

    Décidément, je suis chaud!!


    j'ai trouvé mon erreur pour le changement de fichier (cf un peu plus haut). En fait, il falla, après avoir recréé mon tableau suite à une nouvelle lecture, valider le nouveau modèle.
    Une fois ceci fait, j'ai recréé mon "sorter" avec un regexFilter sur "".
    Et pour finir, j'ai revalidé.

    Voici le code corrigé:
    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
    private void refreshData() {
     
            //Mise à jour du fichier + affichage
            System.out.println("REFRESH DATA TABLE EVENT<<<<<<<<<<<<<<<<<<<<<<");
            tableEvent.removeAll();
     
            //Lecture du fichier
            System.out.println("EVENT : lecture de " + FILENAME);
            readIntByte = new TAFTPReadByte(URL, FILENAME, FILE_SIZE);
            model.setData(createDataTable(readIntByte.readByte()));
            //Creation de la table
            tableEvent.setModel(model);
            tableEvent.validate();
            sorter.setRowFilter(RowFilter.regexFilter("", 1));
            tableEvent.setRowSorter(sorter);
            tableEvent.validate();
            tableEvent.repaint();
            scrollPane.validate();
            scrollPane.repaint();
            labelFileRead.setText("Lecture du fichier " + FILENAME);
    }
    Bon, après je ne sais pas si c'est dans les règles de l'art...


    Plus que le dernier
    MustOne -

    Qui aime Java, mais qui galère à comprendre les subtilités....ou à comprendre tout court
    citation: "ce n'est pas parce qu'on aime un arbre, qu'on ne peut pas contempler la forêt", à rétorquer si votre conjoint(e) vous reproche de trop "mater"

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 97
    Points
    97
    Par défaut Problème résolu
    Bonjour à tous,

    je voulais juste vous informer que j'ai trouvé la solution au problème. C'est vraiment bête comme problème, mais bon, si quelqu'un pourrait m'expliquer le pourquoi du comment

    Voici comment j'ai remédié au problème le problème initial:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            model = new MyTableModel(createDataTable(readIntByte.readByte()));
            sorter = new TableRowSorter<MyTableModel>(model);
            tableEvent = new JTable(model);
         tableEvent.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
            tableEvent.setAutoCreateRowSorter(true);
            tableEvent.setRowSorter(sorter);
    En fait, les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        tableEvent.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
            tableEvent.setAutoCreateRowSorter(true);
    étaient après le "tableEvent.setRowSorter(sorter);" et c'est ca qui m'a posé problème.

    voila.
    MustOne -

    Qui aime Java, mais qui galère à comprendre les subtilités....ou à comprendre tout court
    citation: "ce n'est pas parce qu'on aime un arbre, qu'on ne peut pas contempler la forêt", à rétorquer si votre conjoint(e) vous reproche de trop "mater"

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

Discussions similaires

  1. [MySQL] Problème requete sur plusieurs table
    Par benjin dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/01/2011, 19h47
  2. Problème update sur plusieurs tables
    Par Fabdeuche dans le forum SQL
    Réponses: 4
    Dernier message: 22/04/2010, 16h16
  3. Réponses: 5
    Dernier message: 19/06/2009, 16h33
  4. Problème requete sur plusieurs tables
    Par sigmoun dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/01/2009, 00h32
  5. problème delete sur plusieurs tables
    Par soubre dans le forum Hibernate
    Réponses: 4
    Dernier message: 19/06/2008, 17h16

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