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] Pré-trier sur une colonne


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut [JTable] Pré-trier sur une colonne
    Bonjour,

    La question va peut-être paraitre bête mais malgrès mes recherches j'ai du mal à solutionner mon problème
    Lorsqu'on affiche un JTable il y a la possibilité de trier les données en clicant sur les entêtes.

    J'aimerais que cela soit fait à l'avance lors de l'affichage de mon JTable sur la première colonne.

    Mais je ne parvient pas à trouver comment.

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maTable.setAutoCreateRowSorter(true)
    tu suffirait il?

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Par défaut
    Bonjour,

    pour ma part j'ai une question qui est un peu semblable, j'ai crée une JTable avec des lignes dedans et je souhaite créer un filtre sur le JTable. Quand l'utilisateur va taper "vi" seuls les noms avec l'expression régulière "vi" restera!!

    Est-ce possible?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Ceubex Voir le message
    J'aimerais que cela soit fait à l'avance lors de l'affichage de mon JTable sur la première colonne.
    Il suffit d'appeler explicitement la méthode toggleSortOrder() de ton RowSorter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	table.setAutoCreateRowSorter(true);
    	table.getRowSorter().toggleSortOrder(0); // 0 == première colonne
    Citation Envoyé par titou31000 Voir le message
    pour ma part j'ai une question qui est un peu semblable, j'ai crée une JTable avec des lignes dedans et je souhaite créer un filtre sur le JTable. Quand l'utilisateur va taper "vi" seuls les noms avec l'expression régulière "vi" restera!!
    Il suffit de rajouter un filtre sur le RowSorter, soit en implémentant toi même un RowFilter, soit en utilisant le regexFilter. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableRowSorter<?> sorter = (TableRowSorter<?>)table.getRowSorter();
    sorter.setRowFilter(RowFilter.regexFilter("vi"));
    Attention, comme il s'agit d'une expression régulière, les caractères spéciaux vont être interprétés. Ce n'est pas forcément souhaitable pour une saisie utilisateur.

    Pour éviter cela il faut utiliser Pattern.quote() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RowFilter.regexFilter(Pattern.quote("vi"))
    A noter que tu peux passer le regexp en "case-insensitive" en rajoutant "(?i)" devant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RowFilter.regexFilter("(?i)" + Pattern.quote("vi"))

    Enfin, tu peux limiter le filtres à certaines colonnes, en les précisant en paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // filtre seulement sur les deux premières colonnes
    RowFilter.regexFilter("(?i)" + Pattern.quote("vi"), 0, 1)

    a++

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2010
    Messages : 270
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tableau.getModel());
    String regex = JOptionPane.showInputDialog("Entrez votre filtre : ");
    sorter.setRowFilter(RowFilter.regexFilter(regex, 3));
    Voila pour ma part ce que j'avais fait. Le code ne contient pas d'erreur mais cela ne fait rien...Je souhaite qu'un utilisateur tape son filtre et que le système réagisse en fonction du filtre rentré par l'utilisateur

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Dans le code que tu donnes, tu n'affectes pas ton TableRowSorter à ta JTable...


    Il est inutile de le recréer à chaque fois, il est préférable de le récupérer via table.getRowSorter() comme dans mon code...

    a++

Discussions similaires

  1. [JTable] Trier selon une colonne contenant des Date
    Par Nafnlaus dans le forum Composants
    Réponses: 13
    Dernier message: 25/08/2013, 15h59
  2. Trier une datagrid sur une colonne de numeric
    Par MaitreTsiang dans le forum MXML
    Réponses: 0
    Dernier message: 16/01/2009, 12h34
  3. Trier une GridView en cliquant sur une colonne
    Par rfaouzi dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/02/2007, 21h22
  4. [debutant][JTable] Trier selon une colonne
    Par yupa dans le forum Composants
    Réponses: 3
    Dernier message: 08/08/2005, 11h05
  5. Comment trier une DBGRID en cliquant sur une colonne
    Par sessime dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/10/2004, 16h18

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