p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    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 : 2
    Points
    2

    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
    Invité de passage
    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 : 2
    Points
    2

    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 Tables
    Réponses: 4
    Dernier message: 20/02/2015, 09h28
  2. Problème rafraichissement JTable
    Par david64 dans le forum Fenêtres/Dialogues
    Réponses: 1
    Dernier message: 18/05/2010, 10h23
  3. Réponses: 4
    Dernier message: 31/12/2007, 00h38
  4. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Tables
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  5. [JTable] Problème d'affichage des données
    Par ddams dans le forum Tables
    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