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 :

Recherche chiffre dans un jtable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Août 2017
    Messages : 8
    Points : 15
    Points
    15
    Par défaut Recherche chiffre dans un jtable
    Bonjour a tous,
    je vers vers vous car j'ai un petit soucis mais rien de très grave.
    J'ai ces deux fonction qui permettent de faire une recherche dans un jtable, la premier fonctionne parfaitement mais la deuxième ne fonctionne pas car dans cette colonne (matricule) il n’y a que des chiffre
    et dans l'autre des lettre.
    Comment puis-je faire pour faire fonctionner ma deuxième fonction(filtreMatricule) et faire la recherche sur des chiffre qui sont dans un jTable ?
    Merci d'avance
    Code java : 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
        private void filtrePrenom() {
            TableRowSorter<TableModel> rowSorter = new TableRowSorter<>(table.getModel());
            table.setRowSorter(rowSorter);
            String filterValue = rPrenom.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(1); // colonne Prenom
                    return startsWithIgnoreCase(name, filterValue);
     
                }
        private boolean startsWithIgnoreCase(String string, String prefix) {
    	return string.toLowerCase().startsWith(prefix.toLowerCase());
        }
                };
    	rowSorter.setRowFilter(filter);
    	}
     
        }
     
     
            private void filtreMatricule() {
            TableRowSorter<TableModel> rowSorter = new TableRowSorter<>(table.getModel());
            table.setRowSorter(rowSorter);
            String  filterValue = rMatricule.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(6); // colonne matricule
                    return startsWithIgnoreCase(name, filterValue);
                }
        private boolean startsWithIgnoreCase(String string, String prefix) {
    	return string.toLowerCase().startsWith(prefix.toLowerCase());
        }
                };
    	rowSorter.setRowFilter(filter);
    	}
     
        }

  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,

    Je suppose que le problème vient d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String name = (String) entry.getValue(6); // colonne matricule
    Si ta colonne ne contient que des chiffres, à priori, c'est qu'elle contient un Integer ou un Long (ou Short, Byte, etc)... Donc tu ne peux pas la caster en String. Il faut la convertir en String. Pour convertir en String, on utilise String.valueOf() (ou Integer.valueOf() pour convertir spécifiquement du Integer, mais il faut caster ta donnée en Integer d'abord, donc String.valueOf à l'avantage de fonctionner directement avec n'importe quel type sans avoir à Caster). Si la colonne de la JTable peut être vide (donc contenir null), il faut traiter ce cas à part (l'éliminer du filtre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Object matricule = entry.getValue(6);
    if ( matricule==null ) {
       return false; 
    }
    else {
                    return String.valueOf(matricule).startsWith(filterValue);
    }
    Tu remarqueras que j'ai supprimé le startsWithIgnoreCase qui ne sert à rien pour des nombres.

    Ensuite, si tu peux que si la personne tape "000103" dans le filtre que ça trouver les lignes dont la colonne commence par 103, il faudra convertir le texte du champ de filtre en Integer (ce qui enlèvera les 0), ou alors faire une recherche du premier caractère autre que 0 et utiliser un subtring(), puis reconvertir en String.
    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.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/08/2014, 23h24
  2. Recherche dans une JTable
    Par Dine_Med dans le forum Composants
    Réponses: 3
    Dernier message: 03/10/2010, 19h37
  3. Ne saisir que des chiffres dans une Jtable
    Par NFHnv dans le forum Composants
    Réponses: 3
    Dernier message: 28/05/2009, 21h11
  4. Comment rechercher un chiffre dans un nombre ?
    Par christophe_halgand dans le forum MATLAB
    Réponses: 5
    Dernier message: 05/01/2008, 10h52
  5. Recherche d'un chiffre dans une chaine de nombres
    Par syldudu dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 27/10/2006, 10h55

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