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] Mise à jour des données et deplacement des colonnes


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut [JTable] Mise à jour des données et deplacement des colonnes
    Bonjour,

    A l'action sur un bouton, toutes les données de mon jtable doivent être réactualisées. Je procède ainsi pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mesActions=nouveau();
    for(int i=0;i<mesActions.length;i++)
    			{
    				donneesAc[i][0]=Indice.mesActions[i].nom;
    				donneesAc[i][1]=Indice.mesActions[i].prenom;
    			}
     
    			PanEsp.monModel.setDataVector(donneesAc, PanEsp.titreColonnes);
     
    monJTable.getColumnModel().getColumn(0).setPreferredWidth(100);
    			  monJTable.getColumnModel().getColumn(1).setPreferredWidth(50);
    Tout cela marche très bien sauf quand l'utilisateur déplace une colonne avant l'autre. Lors de la réactualisation, les colonnes se remettent dans l'ordre initial alors qu'il faudrait que cela reste comme l'utilisateur l'a mis. Comment faire cela ?

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    De façon toute simple, en n'utilisant pas la méthode setDataVector mais en prévoyant dans ton modèle une méthode permettant la mise à jour des données. Or cette méthode existe déjà, il s'agit du bon vieux setValueAt.*

    Donc au lieu de faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(int i=0;i<mesActions.length;i++) {
        donneesAc[i][0]=Indice.mesActions[i].nom;
        donneesAc[i][1]=Indice.mesActions[i].prenom;
    }            
    PanEsp.monModel.setDataVector(donneesAc, PanEsp.titreColonnes);
     
    monJTable.getColumnModel().getColumn(0).setPreferredWidth(100);
    monJTable.getColumnModel().getColumn(1).setPreferredWidth(50);
    Il te suffit de faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i=0;i<mesActions.length;i++) {
        PanEsp.monModel.setValueAt(i,0,Indice.mesActions[i].nom);    
        PanEsp.monModel.setValueAt(i,1,Indice.mesActions[i].prenom);
    }
    A noter que les variables public (comme le modèle qui est attribut de la classe PanEsp), bah c'est crade comme façon de faire. Préfère leur des variables privées avec avec des accesseurs (getter/setter) quand le besoin s'en fait ressentir.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    Un très grand merci à toi, ça marche.
    J'ai juste un dernier petit soucis. La taille des données à insérer peut se modifier (mesActions a une taille plus grande)
    et il me met alors une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "Thread-11" java.lang.ArrayIndexOutOfBoundsException: 119 >= 119
    au niveau du premier setValue. Comment je peux dire à l'avance au model que la taille sera plus grande ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    Pour le moment je fais un setDataVector avec un tableau à la bonne taille mais je crois que c'est un peu sale comme méthode

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour faire simple tu peux très bien créer ton propre modèle et lui ajouter deux méthodes ayant pour but d'ajouter/retirer des lignes (voir même toutes les lignes). Attention à bien appeler les méthode fireXXX du modèle à ce moment là.

    Pour plus d'infos sur la créations de ton propre modèle je te redirige vers le tuto suivant: http://baptiste-wicht.developpez.com...ing/jtable/#L3

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/04/2012, 20h49
  2. Réponses: 6
    Dernier message: 22/03/2012, 12h24
  3. Réponses: 6
    Dernier message: 13/12/2010, 20h20
  4. Réponses: 2
    Dernier message: 06/06/2010, 15h15
  5. [RegEx] Mise à jour d'un fichier à partir des données d'un tableau
    Par saramery dans le forum Langage
    Réponses: 21
    Dernier message: 03/11/2008, 23h58

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