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 rafraichissement


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut JTable, problème rafraichissement
    Bonjour,

    J'ai une JTable avec des boutons de suppression de ligne. Quand je lance mon application, tout marche, certaines lignes ont le droit de supprimer la ligne et d'autres non. (géré avec editCellEditor). Une ligne qui a le droit d'être supprimée a une valeur "supprimer" sinon "impossible".

    Par exemple, voici trois lignes de mon tableau après avoir lancé l'appli :
    L1 (id: 1) : ne peut être supprimée - bouton "impossible"
    L2 (id : 2) : peut être supprimée - bouton "supprimer"
    L3 (id : 3) : ne peut être supprimé - bouton "impossible"

    Quand je clique sur les boutons des lignes 1 et 3, rien ne se passe : normal et correct.
    Je décide de supprimer la L2, la ligne est supprimée, ok.
    Le tableau devient :
    L1 (id : 1) bouton "impossible"
    L2 : (id: 3) bouton "supprimer" <- Problème
    Mais voilà j'ai un problème, après avoir supprimé la ligne 2 (id :2), la ligne 2 (id 3) garde le bouton "supprimer" de l'ancienne ligne et devient supprimable alors qu'elle ne doit pas l'être et elle ne l'était pas juste avant que je supprime la ligne 2. Encore plus étrange, quand je clique sur la ligne 2 (n'importe où), le bouton passe de "supprimer" à "impossible" et redevient non supprimable.

    En cherchant sur le net je suis tombé sur la méthode fireTableStructureChanged(), je l'ai donc ajouté à ma méthode removeRow(int position). Or le comportement est bizarre :
    je lance l'appli, l'affichage est correct ;
    je supprime une ligne, ok ;
    et de là mes boutons perdent leurs caractéristiques de bouton, visuellement ce ne sont plus des boutons et il n'y a plus d'effet quand je clique dessus.

    Je pense qu'il faut laisser le fireTableStructureChanged() et rajouter un setCellEditor(mon bouton) après chaque removeRow(), mais je ne vois pas où et comment le mettre.

    Pouvez-vous m'aider ?

    Ici mon code de la méthode removeRow(int position)
    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
       public void removeRow(int position) throws ClassNotFoundException, SQLException{
     
    	      int indice = 0, indice2 = 0;
    	      int nbRow = this.getRowCount()-1;
    	      int nbCol = this.getColumnCount();
    	      Object temp[][] = new Object[nbRow][nbCol];
     
    	      for(Object[] value : this.data){
    	         if(indice != position){
    	            temp[indice2++] = value;
    	         }
    	         indice++;
    	      }
    	     Integer idResa = (Integer) this.data[position][0] ;  
     
    	      this.data = temp;
    	      temp = null;
    	      //Suppression en base
    	      Connexion co = new Connexion();
    	      co.initConnexion();
    	      Statement st = co.getConnexion().createStatement();
    	      st.executeUpdate("delete from Reservations where id="+idResa);
    	      co.disconnect();
    	      //refresh
    	      // this.fireTableDataChanged();
    	      this.fireTableRowsDeleted(position, position);
    	      this.fireTableStructureChanged();
       }

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé la solution, il suffisait de rajouter un
    setCellEditor juste avant l'exécution de la méthode removeRow dans le listener.

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

Discussions similaires

  1. Problème rafraichissement JTable/DefaultTableModel
    Par marc.L dans le forum Composants
    Réponses: 4
    Dernier message: 20/02/2015, 09h28
  2. Problème rafraichissement JTable
    Par david64 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 18/05/2010, 10h23
  3. [JTable] Problème de rafraichissement (ou de modification)
    Par Invité1 dans le forum Composants
    Réponses: 4
    Dernier message: 31/12/2007, 00h38
  4. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  5. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07

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