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] problème après suppression d'une ligne


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut [JTable] problème après suppression d'une ligne
    Bonjour,

    J'ai une JTable qui contient une seule ligne. J'ai fait en sorte que l'on ne puisse sélectionner les lignes en entier (et une seule ligne à la fois).

    Le problème est que lorsque je supprime la seule ligne que j'ai (au travers de mon TableModel (qui étend AbstractTableModel), ma JTable laisse affiché ma ligne alors que le vecteur de données de mon TableModel ne contient plus aucune donnée!

    Merci de votre aide, je galère

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 73
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Si tu etends AbstractTableModel, essaye 'fireTableRowsDeleted' pour notifier
    a tes listeners dont fait normalement et automatiquement partie
    ta JTable.

    Cordialement,
    PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    en fait, je reconstruit les données de mon TableModel à chaque fois (c'est comme ca et je peux pas faire autrement). j'ai l'impression que c'est ma table qui met pas à jour automatiquement le nouveau TableModel quand il reste qu'une seule ligne

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Points : 194
    Points
    194
    Par défaut
    Salut,
    Poste ton code ...
    sylvain_2020

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Je ne sais pas si ça a quelque chose à voir - je ne connais pas les "JTable", mais en supposant que ça ressemble aux "Table" de SWT - est-ce que par hasard tu mettrais pas des champs textes ou des combos dans ta table?
    Parce qu'à ce moment là, il faut que les détruises aussi (il ne suffit pas de supprimer la ligne de la table)

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TableModel tableListeReglesModel = new TableModele(new String[][] {}, new String[] { "N°", "Destination", "Application", "Horaires", "Accès" });
    tableListeRegles = new JTable();
    scrollPaneListeRegles.setViewportView(tableListeRegles);
    tableListeRegles.setModel(tableListeReglesModel);
    tableListeRegles.setAutoResizeMod(JTable.AUTO_RESIZE_LAST_COLUMN);
    tableListeRegles.getTableHeader().setReorderingAllowed(false);
    tableListeRegles.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    pour actualiser ma JTable en fonction de données provenant d'un serveur, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ((TableModele) this.tableListeRegles.getModel()).reset();
    for (int i = 0; i < this.liste.length; i++) {
       ((TableModele) this.tableListeRegles.getModel()).addLigne(ligne);
    }

    et voila ma classe TableModel qui étend AbstractTableModel:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    public class TableModele extends AbstractTableModel {
     
        private Vector donnees;
        private String colonnes[];
     
        public TableModele(Object donnees[][], String colonnes[]) {
            this.donnees = new Vector();
     
            for (int i = 0; i < donnees.length; i++) {
                this.donnees.add(donnees[i]);
     
            }
            this.colonnes = colonnes;
        }
     
        public int getRowCount() {
            return donnees.size();
        }
     
        public String getColumnName(int col) {
            return colonnes[col];
        }
     
        public int getColumnCount() {
            return colonnes.length;
        }
     
        public boolean isCellEditable(int row, int col) {
            return false;
        }
     
        public Object getValueAt(int rowIndex, int columnIndex) {
            return ((String[]) this.donnees.get(rowIndex))[columnIndex];
        }
     
        public void reset() {
            this.donnees = new Vector();
        }
     
        public void addLigne(Object[] ligne) {
     
            String[] copie = new String[ligne.length];
            System.arraycopy(ligne, 0, copie, 0, ligne.length);
            // Ajout de ligne dans le tableau donnees
            donnees.add(copie);
            // index recoit l'index de cette nouvelle ligne
     
            fireTableRowsInserted(0, donnees.size());
            fireTableRowsDeleted(0,donnees.size());
        }
    }

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Points : 194
    Points
    194
    Par défaut
    Le probleme vient de ta methode reset(), il faut que tu "avertisses" qu'il y a eu un changement dans les donnees. Tu peux faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		public void reset() {
    			this.donnees = new Vector();
    			fireTableDataChanged();
    		}
    sylvain_2020

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour ton aide!!!
    en effet, le problème venait bien de là!!!

    Merci encore !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/06/2015, 07h19
  2. Traitement après suppression d'une ligne
    Par thorgal1612 dans le forum SAGE
    Réponses: 3
    Dernier message: 02/07/2013, 09h03
  3. [WD17] Problème de suppression d'une ligne base de donnée
    Par xGuigui78 dans le forum WinDev
    Réponses: 19
    Dernier message: 13/11/2012, 09h38
  4. Réponses: 4
    Dernier message: 24/08/2007, 16h44
  5. [Jtable] problème de suppression dans une Jtable
    Par gianni17 dans le forum Composants
    Réponses: 1
    Dernier message: 02/12/2005, 18h36

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