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]Effacer une colonne


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 47
    Points
    47
    Par défaut [JTable]Effacer une colonne
    Bonjour.

    Et bien j'ai nue jtable que je peut modifier en fonction des choix de l'utilisateur. c'est à dire que je peux définir le nombre de lignes et de colonnes en fonction d'une interface graphique. J'ai un problème lorsque je veut effacer une colonne. Celle-ci s'efface au niveau de l'affichage, mais pas au niveau de la structure. Ce qui veut dire que lorsque que j'ajoute une nouvelle colonne, celle que j'avais effacer avant réaparaissent...

    J'utilise pour le moment cette méthode pour effacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        private void jButtonSuprimerActionPerformed(java.awt.event.ActionEvent evt) {
            if(jTableauChamps.getColumnCount()>0){
                int [] selection = jTableauChamps.getSelectedColumns();
                jTableauChamps.removeColumn(jTableauChamps.getColumnModel().getColumn(selection[0]));
                titresColonnes.remove(selection[0]);
                System.out.println(titresColonnes);
            }
     
        }
    En lisant la javadoc j'ai vu qu'il disait :

    Removes aColumn from this JTable's array of columns. Note: this method does not remove the column of data from the model; it just removes the TableColumn that was responsible for displaying it.

    Comment faire pour effacer la colonne du model egalement??

    Merci d'avance!!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    utilises tu une classe héritant de DefaultTableModel ?
    car si oui c'est elle qui définit ce qui sera renvoyé dans les cellules grace à la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public Object getValueAt(int row,
                             int column)Returns an attribute value for the cell at row and column. 
     
    Specified by:
    getValueAt in interface TableModel
    Parameters:
    row - the row whose value is to be queried
    column - the column whose value is to be queried 
    Returns:
    the value Object at the specified cell 
    Throws: 
    ArrayIndexOutOfBoundsException - if an invalid row or column was given
    donc si effectivement ta colonne est supprimé il faudrait surcharger cette méthode je pense
    par exemple en lui demandant de renvoyer les données pour la colonne +1, enfin je ne sais pas comment tu rempli ton tableau....

  3. #3
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Il te faut une liste de boolean correspondant à l'affichage ou non de chaque colonne de ton model.
    Dans la méthode getValueAt, tu dois parcourir cette liste et décaler si besoin ( booléen activé ) l'index de colonne. Cette méthode n'affecte que l'affichage.

    Si tu veux vraiment supprimer réellement les objets dans le modèle : tu as du définir un conteneur sur tes données qui en quelque sorte représente un tableau a deux dimension. Ainsi si tu as utilisé une liste de liste tu peux faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [...]
    private List<List> datas=new ArrayList<List>();
    [...]
    public void removeInModel(int col){
       for(int i=0;i<this.datas.size();i++){
          ((List)this.datas.get(i)).remove(col);
       }
    }

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    bonjour
    est ce que tu as remplit le jtable d'apres la base de données????

  5. #5
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Citation Envoyé par lhaj-boolean
    bonjour
    est ce que tu as remplit le jtable d'apres la base de données????
    Attention je te vois venir en disant que le contenu de la JTable doit être rafraichi via un "SELECT truc FROM machin" adéquat à chaque modification de paramètre.
    Certe cela est aussi une solution mais il faut bien peser les contraintes qu'une méthode apporte par rapport à l'autre à la vue de différents paramètres : estimation du nombre de tuples récupérés, rapport de charge entre la machine client et la machine qui héberge le SGBD, charge réseau du SGBD etc.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 47
    Points
    47
    Par défaut
    RE!

    Et bien en fait j'ai trouvé une solution à mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        private void jButtonSuprimerActionPerformed(java.awt.event.ActionEvent evt) {
            if(jTableauChamps.getColumnCount()>0){
                int [] selection = jTableauChamps.getSelectedColumns();
                titresColonnes.remove(selection[0]);
                dtmTableModel.setDataVector(donnees, titresColonnes);
                System.out.println(titresColonnes);
            } 
        }
    Je redonne directement le set de Data.

    Qu'en pensez-vous, c'est pas trop sal??

  7. #7
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Si cela marche, tant mieux pour toi, cela dit, ça me semble pas propre du tout ( recupérer un tableau pour n'en exploiter qu'un seul élément, réafecter le modèle entier etc... ), enfin n'étant pas un crack je JTable je laisse la parole.

Discussions similaires

  1. [JTable] Masquer une colonne
    Par IvanPopov dans le forum Composants
    Réponses: 2
    Dernier message: 26/07/2005, 17h12
  2. [JTable] Redimensionner une colonne
    Par molusk dans le forum Composants
    Réponses: 4
    Dernier message: 21/07/2005, 16h25
  3. [JTable] ajouter une colonne de checkbox
    Par nawel dans le forum Composants
    Réponses: 3
    Dernier message: 04/05/2005, 14h07
  4. Réponses: 4
    Dernier message: 09/02/2005, 10h44
  5. [JTable] redimensionner une colonne
    Par TheSeb dans le forum Composants
    Réponses: 2
    Dernier message: 21/12/2004, 19h30

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