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] Tri problème suppression


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Par défaut [JTable] Tri problème suppression
    Bonjour,

    Je possède dans mon application une JTable sur laquelle j'utilise le tri via TableRowSorter.

    Lorsque je supprime une de mes lignes sans trier, tout fonctionne parfaitement, cela supprime la ligne dans l'affichage et supprime l'élément dans la base de données.
    Lorsque je supprime une de mes lignes en utilisant le tri, ce n'est pas le bon élément qui est supprimé dans l'affichage mais c'est le bon élément qui est supprimé dans ma base de données.
    Donc si je ferme et rouvre ma JTable le problème n'est plus là, je pourrais faire un simple rafraîchissement en somme mais je ne trouve pas ça propre.

    (J'ai cru comprendre que ça venait du fait que lors de la suppression, la taille de mon tableau reste le même avec un élément en moins et le tri s'effectue donc encore sur la taille totale.)

    Merci par avance pour votre aide !

    Voici le code :

    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
     
    		super();
    		setTitle("Liste des clients");
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
    		modele = new ListeClientsModele();
    		cDAO = new ClientDAO();
    		tableClients = new JTable(modele);
    		tableClients.getColumnModel().getColumn(0).setMinWidth(0);
    		tableClients.getColumnModel().getColumn(0).setMaxWidth(0);
    		getContentPane().add(new JScrollPane(tableClients));
    		tableClients.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent click) {
    				if(click.getClickCount()==1 && click.getButton()==click.BUTTON3)
    				{
    					ligne = tableClients.rowAtPoint(click.getPoint());
    					id = (int) tableClients.getValueAt(ligne, 0);
    					popupMenu.show(tableClients, click.getX(),click.getY());
    				}
    			}
    		});
     
    	    TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tableClients.getModel());
    	    tableClients.setRowSorter(sorter);
    	    sorter.setSortsOnUpdates(true);
    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
    		popupMenu = new JPopupMenu();
    		item = new JMenuItem("Supprimer");
    		item.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				try
    				{
    					if(aDesReservEnCours(id) == false)
    					{
    						cDAO.delete(id);
    						afficherMessage("Suppression effectuée avec succès");
    						modele.removeClient(ligne);
    					}
    					else
    					{
    						afficherMessage("Le client a des réservations en cours");
    					}
    				}
    				catch(Exception e)
    				{
    					afficherMessage("Erreur dans la suppression du client.");
    				}
    			}
    		});
    		popupMenu.add(item);

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    tu dois ajouter a la fin de ton remove ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    modele.removeClient(ligne);
    modele.fireTableDataChanged()
    Eric

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Par défaut
    Non ça ne marche pas car je l'ai déjà dans mon modele :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public void removeClient(int rowIndex) {
        	listeClients.remove(rowIndex);
        	fireTableRowsDeleted(rowIndex, rowIndex);
        	fireTableDataChanged();
        }
    J'ai testé quand même mais ça ne change rien

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    essaies de mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modele.removeRow(ligne)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 40
    Par défaut
    Euh... je n'ai pas cette méthode O_o

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    ton model extends quelle model?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2008, 21h17
  2. [VBA-A] Problème Suppression enreg en cours
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 20h08
  3. [JTable] Tri des données
    Par soulhouf dans le forum Composants
    Réponses: 7
    Dernier message: 08/09/2005, 14h01
  4. [JTable] tri alphabétique
    Par clairette dans le forum Composants
    Réponses: 1
    Dernier message: 27/07/2005, 11h09
  5. [JTable] Tri des colonnes
    Par djskyz dans le forum Composants
    Réponses: 10
    Dernier message: 17/03/2005, 10h14

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