Précédent   Forum du club des développeurs et IT Pro > Java > Interfaces Graphiques en Java > AWT/SWING
AWT/SWING
Forum d'entraide pour les API Swing et AWT. Avant de poster -> FAQ AWT/SWING
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/01/2013, 14h30   #1
Remox
Invité de passage
 
Homme
Étudiant
Inscription : 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 :
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();
   }
Remox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 15h07   #2
Remox
Invité de passage
 
Homme
Étudiant
Inscription : 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
J'ai trouvé la solution, il suffisait de rajouter un
setCellEditor juste avant l'exécution de la méthode removeRow dans le listener.
Remox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h11.


 
 
 
 
Partenaires

Hébergement Web