Votre question

comment pouvoir interdire des doublons dans les lignes de ma Jtable

Tags :
  • Java
  • Programmation
Dernière réponse : dans Programmation
2 Novembre 2011 14:36:52

Bonjour à tous, dans mon application je dispose de deux (2) JTables A et B, l’idée est de pouvoir, en cliquant sur le bouton ajouter, copier la donnée de la ligne sélectionnée de A dans B, ce que je suis parvenu à faire sans problème, mais le hic est que la donnée copiée se place sur la première ligne de B, je voudrais qu’elle se place sur la dernière ligne, je veux dire après le dernier enregistrement de la JTable B. Aussi je voudrais pouvoir interdire d’avoir des doublons dans la table B,mes tentatives se sont chaque fois soldées par des échecs, quelqu’un pourrait-il m’aider ?

codes :

  1. Java :private javax.swing.JTable txtJtableRegDispo;
  2. private javax.swing.JTable txtJtableRegCharger;
  3. private DefaultTableModel aModel,bModel;
  4.  
  5. //Méthodes de vérification de doublon
  6. public boolean verif(Object[] val){
  7. boolean result=true;
  8. for(int k=0;k< txtJtableRegCharger.getModel().getRowCount();k++){
  9. if(txtJtableRegCharger.getModel().getValueAt(k, 0) == val){
  10. JOptionPane.showMessageDialog(null, val+" existe déjà", "Erreur", JOptionPane.ERROR_MESSAGE);
  11. result=false;
  12. }
  13. }
  14. return result;
  15. }
  16.  
  17. private void CmdAjouterActionPerformed(java.awt.event.ActionEvent evt) {
  18. // TODO add your handling code here:
  19. // txtJtableRegDispo; Registre (A); txtJtableRegCharger Registre (B)
  20. int i=txtJtableRegDispo.getSelectedRow();
  21. int j=0;/* a ce niveau j'ai beau essayer de recuperer le nbr de ligne pour incrementé sans succès */
  22. Object [] valeur = {txtJtableRegDispo.getValueAt(i, 0)};
  23. bModel.insertRow(j,valeur);
  24. if(verif(valeur)==true )
  25. bModel.insertRow(j,valeur);
  26. j++ ;
  27. }


Autres pages sur : pouvoir interdire doublons lignes jtable

a c 232 L Programmation
2 Novembre 2011 16:32:09

Au lieu de faire un insertRow(j, valeur), fais un addRow(valeur), ça l'ajoute directement à la fin.

Et pourquoi tu ajoutes 2 fois en ne faisant la vérification que la 2ème fois ?
2 Novembre 2011 18:38:18

merci bien Omar,l'un de mes souci est reglé,la solution se trouvait meme à coté et je suis parti cherché loin.l'autre concerne l'interdiction de doublon dans la table de destination.ma methode ne fonctionne pas.voici mon nouveau code:
  1. private void CmdAjouterActionPerformed(java.awt.event.ActionEvent evt) {
  2. int i=txtJtableRegDispo.getSelectedRow();
  3. Object [] valeur = {txtJtableRegDispo.getValueAt(i, 0)};
  4. if(verif(valeur)==true){
  5. bModel.addRow(valeur);
  6. }
  7.  
  8. }
a c 232 L Programmation
2 Novembre 2011 18:54:57

Hmm, je ne fais pas de Java régulièrement, donc je loupe peut être quelque chose.
Mais, tu n'as qu'une seule colonne dans ta table ?
Quand tu fais un txtJtableRegDispo.getValueAt(i, 0), tu retournes la valeur de la 1ère colonne de ta ligne, non ?
Ca ne doit pas être un Object[], mais seulement un Object, non ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS