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 :

[Peu important]JTable effacer colonne


Sujet :

Composants Java

  1. #1
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 251
    Points
    1 251
    Par défaut [Peu important]JTable effacer colonne
    Bonjour,

    J'ai rencontré il y a peu un problème, qui n'en est pas vraiment un, à savoir : est-il possible de ne pas afficher une colonne dans une JTable, alors qu'elle contient des données.

    Je m'explique, j'ai un jeu de données, grâce auquel je rempli un TableModel, et donc ma Table. Il y a dans ce jeu de données, entre autres, un identifiant qui me permet ensuite de mettre à jour la BD dont je tire mes données. Ce que j'aurais voulu faire c'est de mettre cet identifiant dans une colonne, et de ne plus afficher cette colonne une fois tout le déboggage terminé. Ca me permet ainsi de récupérer l'identifiant directement sur la ligne sélectionnée, plutôt que dans le jeu de données du Table Model. (Je suis clair là ?)

    Bref vous l'aurez compris, j'utilise la deuxième solution (je récupère les données la où elles se trouvent... à l'origine de mon TableModel !), mais j'aurais quand même aimé savoir si c'est possible de masquer une colonne.

    PS: Le setPreferredSize(0) me laisse une colonne de quelques dizaine de pixels de largeur...

  2. #2
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Rien ne t'empèche de recréer une JTable avec des colonnes différentes suivant une action, et d'afficher cette "nouvelle" JTable à la place...

  3. #3
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Ben pour masquer une colonne, j'aurais bien utilisé le TableModel, justement ! Un ptit boolean, et ca devrait marcher, non ?

  4. #4
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    A partir du TableModel tu peux supprimer une colonne en la retirant de la liste des colonnes et en ne donnant plus de valeur pour celle-ci dans la méthode getValueAt()

    Ce doit être assez simple.

    Et un p'tit coup de fireTableStructureChanged() ou une de des méthodes similaires pour que l'affichage se mette à jour...

  5. #5
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 251
    Points
    1 251
    Par défaut Je suis peut-être un peu trop gourmand...
    Citation Envoyé par Regis.C
    Rien ne t'empèche de recréer une JTable avec des colonnes différentes suivant une action, et d'afficher cette "nouvelle" JTable à la place...
    En gros, c'est un petit peu ce que je voulais éviter de faire... J'aurais bien aimer conserver ma JTable... et toutes ses colonnes et valeurs !

    Citation Envoyé par xxaragornxx
    tu peux supprimer une colonne en la retirant de la liste des colonnes et en ne donnant plus de valeur pour celle-ci dans la méthode getValueAt()
    En effet, c'est plutôt trivial, mais dans ce cas, quand je fais un getSelectedRow() sur mon model, dans mon Listener, je n'ai justement pas de valeur pour l'identifiant... puisque je n'ai plus de colonne le définissant.

    Citation Envoyé par xavlours
    Un ptit boolean, et ca devrait marcher, non ?
    Ben... oui peut-être, mais je ne vois pas du tout comment tuu veux faire ! Peux-tu développer ?

    Cela dit, avec vos réponses, je me rend mieux compte que ce que je veux faire peut être fait grâce aux sources de données, et je comprendrai assez bien que Sun n'est pas pris la peine de développer quelque chose de plus spécifique, et ma foi, assez inutile !

  6. #6
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Tu adaptes en fonction de l'état colonne affichée/cachée les méthodes :
    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
    public class MonTableModel implements TableModel {
      private booean hidden = false;
      private int index_colonne_cachee = ...;
     
    ...
      public int getRowCount() {
        if(hidden)
          return nbcolonnes - 1;
        else
          return nbcolonnes;
      }
     
      public Object getValueAt(int row, int col) {
        if(hidden && col >= index_colonne_cachee)
          return MonEx_getValueAt(row, col+1);
        else
          return MonEx_getValueAt(row, col);
      }
    ...
    }
    A toi de donner une valeur à index_colonne_cachee, et de remplacer nbcolonnes et MonEx_getValueAt par ce qu'il convient.

  7. #7
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 251
    Points
    1 251
    Par défaut
    A ouais, bien vu !

    En gros, je me retrouve avec 2 models dépendant de mon Boolean hidden... mais avec une seule instance de TableModel !

    Bien joué.

    Merci beaucoup

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

Discussions similaires

  1. [JTable]Effacer une colonne
    Par delma dans le forum Composants
    Réponses: 6
    Dernier message: 17/10/2006, 20h05
  2. Importer que quelques colonnes Excel vers Acces
    Par ston dans le forum Access
    Réponses: 2
    Dernier message: 05/04/2006, 13h51
  3. Icon pour pour JButton dans une Jtable + pb colonnes
    Par dim_italia dans le forum Composants
    Réponses: 3
    Dernier message: 22/02/2006, 18h05
  4. JTable effacer le rectangle de la cellule
    Par dr00w dans le forum Composants
    Réponses: 4
    Dernier message: 07/11/2005, 15h47
  5. [SWING][JTable] Taille colonnes
    Par Antunes dans le forum Composants
    Réponses: 4
    Dernier message: 28/06/2004, 13h52

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