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

 Java Discussion :

JTable et setAutoCreateRowSorter


Sujet :

Java

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Par défaut JTable et setAutoCreateRowSorter
    Bonjour à tous,

    voilà j'utilise un JTable dans une application et je viens de découvrir l'option setAutoCreateRowSorter qui permet de trier les colonnes du tableau en cliquant sur le titre de la colonne.

    Je l'ai essayé et ça fonctionne correctement sauf que... (évidemment)... Mes colonnes ne sont pas triées correctement. Par exemple si ma colonne contient les entiers: 1 - 2 - 10
    et que je demande de faire le tri, ca me les met dans l'ordre 1 - 10 - 2...

    Je ne comprends pas pourquoi les nombres sont systématiquement triés comme ca... Pourtant ce sont des Integer...

    Et pour les chaines de caractères (car il y en a aussi) là je n'ai aucun problème...

    Voilà le bout de code qui crée les datas de mon tableau:

    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
    public Object[][] getFullArrayJoueur(){
    		Object[][] arrayToReturn;
    		arrayToReturn = new Object[joueurs.size()][nivType.getFullTitle().length];
    		for (int j=0; j < joueurs.size(); j++) {
    			arrayToReturn[j][0] = joueurs.get(j).getPrenom();
    			arrayToReturn[j][1] = joueurs.get(j).getNom();
    			for (int i=0; i < nivType.titreSecondCarac.length; i++){
    				int k= i+nivType.titreJoueurId.length;
    				arrayToReturn[j][k] = new Integer(joueurs.get(j).getLastCaracDependingOnType(nivType.titreSecondCarac[i]).getNiveau());
    			}
    			for (int i=0; i < nivType.titreMainCarac.length; i++){
    				int k= i+nivType.titreJoueurId.length+nivType.titreSecondCarac.length;
    				arrayToReturn[j][k] = new Integer(joueurs.get(j).getLastCaracDependingOnType(nivType.titreMainCarac[i]).getNiveau());
    			}
    		}
    		return arrayToReturn;
    	}
    Si quelqu'un a une idée...

  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
    Tout simplement car l'autosorter considère toutes les valeurs comme des chaînes et non des entiers car le DefaultTableModel renvoie Object.class par défaut pour la méthode getColumnClass.
    Pour obtenir un comportement correct il te faut créer ton propre modèle héritant de DefaultTableModel et surchargeant la méthode getColumnClass pour qu'elle renvoie la bonne classe (Integer.class dans ton cas).

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Par défaut
    Ah ok super. Merci

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

Discussions similaires

  1. Jtable setAutoCreateRowSorter qui plante
    Par Hesiode dans le forum Composants
    Réponses: 1
    Dernier message: 20/11/2009, 23h04
  2. setAutoCreateRowSorter JTable avec checkBox
    Par jamespage dans le forum Composants
    Réponses: 1
    Dernier message: 10/10/2008, 16h55
  3. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  4. JBuilder7 & JTable Colonne alignement
    Par Tonton Luc dans le forum JBuilder
    Réponses: 5
    Dernier message: 06/11/2002, 17h32
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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