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 :

Probleme de suppression dans une JTable


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Probleme de suppression dans une JTable
    Bonjour,

    J'ai réalisé une application CRUD ,tout fonctionne sauf la suprression en effet si je selectionne plusieurs lignes que je fais un clic droit delete cela fonctionne, si je selectionne une ligne à l'indice 4 par exemple c'est la ligne à l'indice 2 qui est supprimée
    Je voudrais pouvoir effacer la ligne que j'ai selectionné n'importe où sur mon tableau...
    j'ai un tableau de deux colonnes et des lignes dynamiques........
    Merci de l'attention que vous porterez à mon pb si vous savez ce qui cloche faites moi signe merci encore

    voici le code du Delete et ma méthode removePerson
    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
    ============================================================*========== 
    /* 
    * To change this template, choose Tools | Templates 
    * and open the template in the editor. 
    */ 
    package crudapplication.actions; 
     
    import crudapplication.PersonsModel; 
    import java.awt.event.ActionEvent; 
    import javax.swing.AbstractAction; 
    import javax.swing.JOptionPane; 
     
    /** 
    * 
    * @author FRWD9529 
    */ 
    public class DelAction extends AbstractAction { 
     
      private int[] selectedRows = new int[0]; 
      private PersonsModel model = null; 
     
     
      public DelAction(PersonsModel model) { 
        super("Delete…"); 
        this.model = model; 
      } 
     
      public void setSelectedRows(int[] selectedRows) { 
     
        this.selectedRows = selectedRows; 
        setEnabled((this.selectedRows.length > 0)); 
      } 
     
      public void actionPerformed(ActionEvent e) { 
        int result = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment confirmer votre choix ?", 
    "Confirmation de la suppression", JOptionPane.YES_NO_OPTION); 
        switch (result) { 
          case JOptionPane.YES_OPTION: 
     
            model.removePerson(selectedRows); 
            break; 
          case JOptionPane.NO_OPTION: 
            break; 
        } 
      } 
    }
    ======================================================================

    et le code ou se trouve la méthode removePerson...
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    /* 
    * To change this template, choose Tools | Templates 
    * and open the template in the editor. 
    */ 
    package crudapplication; 
     
    import java.util.ArrayList; 
    import java.util.List; 
    import javax.swing.table.AbstractTableModel; 
     
    /** 
    * 
    * @author Administrateur 
    */ 
    public class PersonsModel extends AbstractTableModel { 
     
      private static String[] columns = {"FirstName", "LastName"}; 
      private List<Person> persons = new ArrayList<Person>(); 
     
      public PersonsModel() { 
     
     
      } 
     
      public void addPerson(Person person) { 
        persons.add(person); 
        int rowIndex = persons.indexOf(person); 
        this.fireTableRowsInserted(rowIndex, rowIndex); 
      }
     
      public Person getPerson(int indexRowSelected) { 
        return persons.get(indexRowSelected); 
      } 
     
      public List<Person> getAll() { 
        return this.persons; 
      } 
    ====================================================================== 
      public void removePerson(int indexRowSelected) { 
        persons.remove(indexRowSelected); 
        this.fireTableRowsDeleted(indexRowSelected, indexRowSelected); 
      } 
     
      public void removePerson(int[] selectedRows) { 
     
        List<Person> toDelete = new ArrayList<Person>(selectedRows.length); 
        for (int i = 0; i < selectedRows.length; i++) { 
          toDelete.add(persons.get(i)); 
        } 
        for (Person person : toDelete) { 
          int index = persons.indexOf(person); 
          persons.remove(person); 
          this.fireTableRowsDeleted(index, index); 
        } 
    } 
    ====================================================================== 
      public void refreshPerson(Person person) { 
        int rowIndex = persons.indexOf(person); 
        fireTableRowsUpdated(rowIndex, rowIndex); 
      } 
     
      @Override 
      public String getColumnName(int column) { 
        try { 
          return columns[column]; 
        } catch (ArrayIndexOutOfBoundsException e) { 
          return "N/A"; 
        } 
      } 
     
      public int getRowCount() { 
        // throw new UnsupportedOperationException("Not supported yet."); 
        return persons.size(); 
      } 
     
      public int getColumnCount() { 
        // throw new UnsupportedOperationException("Not supported yet."); 
        return 2; 
      } 
     
      public Object getValueAt(int rowIndex, int columnIndex) { 
        //throw new UnsupportedOperationException("Not supported yet."); 
        Object valeur; 
        Person person = persons.get(rowIndex); 
     
        switch (columnIndex) { 
          case 0: 
            valeur = person.getFirstName(); 
            break; 
          case 1: 
            valeur = person.getLastName(); 
            break; 
          default: 
            valeur = null; 
        } 
        return valeur; 
      } 
     
      @Override 
      public boolean isCellEditable(int rowIndex, int columnIndex) { 
        return true; 
      } 
     
      @Override 
      public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 
        Person person = this.persons.get(rowIndex); 
     
        switch (columnIndex) { 
          case 0: 
            person.setFirstName(aValue.toString()); 
            break; 
          case 1: 
            person.setLastName(aValue.toString()); 
            break; 
        } 
      } 
     
     
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 854
    Points : 22 876
    Points
    22 876
    Billets dans le blog
    51
    Par défaut
    Fait attention à comment tu nommes tes topics STP, je pensais qu'il s'agissait d'une question sur Java Help (qui est l'API pour intégrer de l'aide en ligne). Egalement pense à utiliser la balise code (le bouton #) pour colorer et garder le formattage de ton code.

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    EN même temps on ne voit absolument pas comment tu appelles l'action....

    Sinon pour éviter de t'embrouiller avec les index lors de la suppression, il te suffit de supprimer directement en parcourant les index sélectionnés par ordre décroissant.

Discussions similaires

  1. rowFilter et suppression de ligne dans une JTable
    Par le.nono dans le forum Composants
    Réponses: 1
    Dernier message: 10/05/2012, 18h46
  2. probleme suppression dans une liste chainée
    Par Ganondorf dans le forum Débuter
    Réponses: 7
    Dernier message: 06/10/2010, 19h02
  3. [MySQL] Probleme de suppression d'une donnée dans MySql
    Par Boony dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/06/2008, 11h12
  4. ajout/suppression d'une ligne dans une jTable
    Par amelA dans le forum Composants
    Réponses: 1
    Dernier message: 16/05/2007, 08h42
  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