Cherche spécialiste en jTable java

Bonjour,

Je chercherai quelqu'un qui pourrai m'aider pour la manipulation d'une jTable. L'ajout de données est faite grâce à un model mais maintenant je dois supprimer une ligne sélectionnée et actualiser la jTable après l'ajout ou la suppression dans la jTable.

Merci pour ceux qui prendront le temps de m'aider.

Ce problème me bloque et ne me permet pas donc d'avancer dans mon projet ce qui est problématique.

Merci d'avance

49 réponses

Résumé de la discussion

Le problème porte sur la gestion d'une jTable où l'ajout se fait via un modèle, mais la suppression d'une ligne sélectionnée et l'actualisation de la table après ajout ou suppression restent problématiques. Des éléments de réponse suggèrent d'utiliser DefaultTableModel et de supprimer une ligne via removeRow, tout en étudiant la définition de méthodes comme DeleteResa et le rafraîchissement du modèle. D'autres contributions proposent d'actualiser des composants connexes comme un ComboBox après l'ajout, ou de partager des extraits montrant comment récupérer les colonnes et valeurs pour l'insertion en base. En cas de besoin, il est utile de vérifier le modèle utilisé et la synchronisation entre la JTable et la source de données pour garantir que les mises à jour s'appliquent rapidement.

Bobot (l’IA à votre service)
  1. oui, mais tu modifies cette ligne par ça:
    modelCmb.addElement(nomMembre+" "+prenomMembre);

    par ça:
    modelCmb.removeElement(nomMembre+" "+prenomMembre);
    1. Bingo encore une fois!!!ça aussi c'est opérationnel.

      Je sais pas si tu connais les applets et si tu sais les utilisés??

      Il ya une manoeuvre que je n'arrive pas à faire.
  2. 1-Pour tester si une est Sélectionnée dans la table tu insères ça avant le code de suppression:
    if(myTable.getSelectedRow()>=0)
    {
    // code supression
    supprimer();
    }
    else
    {
    JOptionPane.showMessageDialog(mainPanel,"Veuillez Selectionner une ligne");
    }

    2-Pour Tester si un Vecteur est vide:
    if(nomVecteur.isEmpty())
    {
    // Faire quelque chose
    }
    1. Ca marche nikel :)

      Je viens de voir un autre petit soucis concernant la suppression d'un membre dans la JTable,
      Je voudrais que la aussi la JComboboxNom soit actualisé.

      J'ai repris le code suivant :

      //Rafraichissement de la jComboBoxNom
      DefaultComboBoxModel modelCmb=(DefaultComboBoxModel)jComboBoxNom.getModel();
      modelCmb.addElement(nomMembre+" "+prenomMembre);

      Mais les variables nomMembre et prenomMembre ne sont pas défini.

      Je suis obligé de les créés dans le programme principal su coup?

      Encore merci sakoba ;)
  3. Je suis de Retour. j'avais un problème de connexion
    1. Ah ok lol, je croyais que tu m'avais laissé tombée!

      J'ai des petits détails à régler.

      -D'abord dans ma jTable, quand aucune ligne n'est sélectionné quand je veux supprimer, je voudrais qu'un message s'affiche pour dire de sélectionner un membre.

      -Ensuite, je sais pas si tu connais les vecteurs ou pas. Si oui comment peut-on faire pour dire pareil que si le vecteur est vide, on affiche un message pour dire que le titre est joué par aucun groupe.

      J'ai fais ceci mais ça ne marche pas :

      if (info == null )
      				        		{
      			  	        			System.out.print("ce titre nexiste pa" +rsOeuvreTitre);
      				        			JOptionPane.showMessageDialog(this, "Ce titre est joué par aucun groupe. Veuillez choisir un autre groupe" , "Message",
      				        					JOptionPane.INFORMATION_MESSAGE );
      				        		}
      


      Info étant mon vecteur.

      Enfin, je voulais savoir si tu t'y connaissais un peu en applet?

      Merci beaucoup sakoba
  4. Je ne suis pas un spécialiste de Oracle mais la solution Technique que je puisse te donner C'est que pour éviter les problèmes de format, généralement on utilise le type varchar au lieu de Date et cela vous permet d'inserer n'importe quel format de date dans ta colonne Date.
    1. Ok je vais voir ça alors.

      Et autrement, je voulais savoir si tu t'y connaissais en applet?
    2. T'es parti?
  5. Donc commences par modifer le format par defaut de ton champs Datenaissane dans la Base de donées.
    1. Comment je peux faire ça??

      Quand je vais sur modifier ma table, il me demande juste le type est y a que date qui convient comme format
  6. Je vois puisque tu n'as pas définit un format par défaut donc ta Base de données utilise le format Américain AAAA-MM-JJ.
    Selon ton code:

    Remplace ça:
    Date date;
    try
    {
    date = Date.valueOf(jTextFieldDate.getText());
    }
    Par ça:
    String date;
    try
    {
    //Retourne la date telle que défini dans la zone de texte
    date = jTextFieldDate.getText();
    }
    Mais tu dois respecter ce format "2011-02-09" tant que tu n'as pas défini le tien
    1. Il faudrait que je puisse rentrer plutôt dans ce format "2011/02/09" autrement le format "2011-02-09" est considéré comme un nombre et du coup je ne peut pas l'ajouter dans ma base!
  7. Essais avec ce Format: 2011-02-09.
    qu'est ce qu'il affiche?
    1. Il me marque veuillez rentrer le format AAAA-MM-JJ
  8. Qu'est ce qui se passe?
    Il affiche une erreur ou C'est le format qui ne te convient pas?
    1. Ben en fait, je rentre une date au bon format et il me met une erreur comme quoi, je dois rentré au bon format^^.

      Tiens le script de ma table membre :

      CREATE TABLE MEMBRE
      (
      NUMPERSONNE NUMBER(3) NOT NULL,
      NUMGROUPE NUMBER(3) NOT NULL,
      RESPONSABILITEMEMBRE CHAR(32) NOT NULL,
      DATENAISSANCEMEMBRE DATE NOT NULL,
      NOMPERSONNE CHAR(32) NOT NULL,
      PRENOMPERSONNE CHAR(32) NOT NULL,
      TITRECIVILITE CHAR(4) NOT NULL
      , CONSTRAINT PK_MEMBRE PRIMARY KEY (NUMPERSONNE)
      ) ;

      Je n'est rien défini au niveau du format de la date au niveau de ma nase oracle.

      Et je pense que ma requête concernant l'insertion est bonne.
  9. là c'est un peu compliqué. bon passons à l'autre étape pendant que je modifie le code de tri pour toi.
    1. T'es vraiment gentil ^^

      Alors ben la j'ai un gros soucis concernant la date de naissance du membre quand je veux ajouter un membre dans ma base de données.

      J'ai fais un code mais il ne marche pas :

      Date date;
      		try
      		{
      			date = Date.valueOf(jTextFieldDate.getText());
      		}
      		catch (IllegalArgumentException e)
      		{
      			JOptionPane.showMessageDialog(null, "Rentrez une date au format yyyy/mm/dd" );
      			return;
      		}*/


      Et voici le code de ma requete dans la BDD oracle :

      public class Insertion {
          private static Connection c;
      
          private static Statement stm;
      
          public static void insertResa( int numPersonne, int numGroupe, String responsabilite,Date date, String nomPersonne, String prenomPersonne, String civilite  ) throws SQLException
          {
              try
              {
              	// récupération de la connexion
                  c = Connect.getCon();						           							
                  stm = c.createStatement();
                  String 	sql = "INSERT into MEMBRE VALUES (" + numPersonne + "," + numGroupe + ",'" + responsabilite + "'," + date + ",'" + nomPersonne + "','" + prenomPersonne + "','" + civilite + "')";
                  // Execution de la requete
                  stm.executeUpdate(sql);						
                  stm.close();
              }
              catch(SQLException sqlE)
              {
                  System.out.println("Sql Erreur " + sqlE.getMessage());
                  throw sqlE;
              }
              catch(Exception e)
              {
                  System.out.println("Erreur " + e.getMessage());
              }
          }
      }
      
  10. Pour le Tri, Dans la Fonction "getJComboBoxNom()"
    Remplace ça:
    jComboBoxNom = new JComboBox(nomPrenom);

    Par ça:
    jComboBoxNom = new JComboBox(nomPrenom) {
    public void addItem(Object anObject) {
    int size = ((DefaultComboBoxModel) dataModel).getSize();
    Object obj;
    boolean added = false;
    for (int i=0; i<size; i++) {
    obj = dataModel.getElementAt(i);
    int compare = anObject.toString().compareToIgnoreCase(obj.toString());
    if (compare <= 0) {
    super.insertItemAt(anObject, i);
    added = true;
    break;
    }
    }

    if (!added) {
    super.addItem(anObject);
    }
    }
    };
    1. Ma JComboBoxNom ne s'affiche plus au chargement de l'applet

      Voici mon code :

      private JComboBox getJComboBoxNom() 
      	{
      		if (jComboBoxNom == null)
      		{	
      			jComboBoxNom = new JComboBox(nomPrenom)
      			{
      				public void addItem(Object anObject) 
      				{
      					int size = ((DefaultComboBoxModel) dataModel).getSize();
      					Object obj;
      					boolean added = false;
      					for (int i=0; i<size; i++) 
      					{
      						obj = dataModel.getElementAt(i);
      						int compare = anObject.toString().compareToIgnoreCase(obj.toString());
      							if (compare <= 0) 
      							{
      								super.insertItemAt(anObject, i);
      								added = true;
      								break;
      							}
      					}
      
      								if (!added) 
      								{
      									super.addItem(anObject);
      								}
      				}
      			};
      		aaa();
      		}
               return jComboBoxNom;
            }
      


      Merci beaucoup
  11. Bonjour Maria.

    Non tu as une erreur dans ton code. tu as utilisé cet objet ComboBox "jComboBoxNom" comme le nom de Ton Model ça c'est une erreur.
    Essais ça:
    //modelCmb(ComboBoxModel) different de jComboBoxNom (ComboBox)

    DefaultComboBoxModel modelCmb=(DefaultComboBoxModel)jComboBoxNom.getModel();
    modelCmb.addElement(nomMembre+" "+prenomMembre);
    1. Bonjour Sakoba,

      Ça ne me met plus d'erreur mais ça ne l'actualise pas.
    2. Autant pour moi ça marche bien :). Seulement, est ce que on peut pas l'ajout à sa place alphabétique vu que là il l'ajout à la fin de la combo c'est pour ça que je ne l'avais pas vu!!!

      Un grand grand merci pour cette nouvelle étape de passé sakoba :D
  12. Selon ton Code:

    mycmb.addElement(nomMembre+" "+prenomMembre);

    Cette ligne actualise le ComboBox après l'ajout d'une nouvelle personne.
    1. Ok merci beaucoup sakoba.

      Je testerai ça demain vu que je dois m'absenter là.

      Je te tiens au courant demain matin.

      Encore merci sakoba.

      Bonne soiré, à demain
  13. Pour actualise le ComboBox après l'ajout:
    //juste après le code d'actualisation de la table
    DefaultComboBoxModel mycmb=(DefaultComboBoxModel)myCmb.getModel();
    mycmb.addElement("Sakoba");
    1. Le sakoba de : mycmb.addElement("Sakoba"); correspond à quelle variable?
  14. Montres moi le code qui s'applique au controle comboBox.
    1. C'est un code barbare puisqu'il récupére les nom et prénom de tous les membres de la base et quand j'en sélectionne un, ces infos s'affiche des les différents graphiques de mon applet.

      Voici le code :

      private JComboBox getJComboBoxNom() {
      		if (jComboBoxNom == null) {	
      		jComboBoxNom = new JComboBox(nomPrenom);
      		jComboBoxNom.setBounds(new Rectangle(177, 26, 153, 20));
      		jComboBoxNom.setPreferredSize(new Dimension(120, 20));
      		aaa();
      		}
               return jComboBoxNom;
            }
      


      private void aaa() {
      		rsMembre = Select.ListeMembre();
      		         
      		            try
      		            {
      		               while (rsMembre.next())
      		               {
      		                  Membre r = new Membre();
      		                  r.setnumPersonne(rsMembre.getInt(1));
      		                  r.setnumGroupe(rsMembre.getInt(2));
      		                  r.setresponsabiliteMembre(rsMembre.getString(3).trim());
      		                  r.setdateNaissanceMembre(rsMembre.getDate(4));
      		                  r.setnomPersonne(rsMembre.getString(5).trim());
      		                  r.setprenomPersonne(rsMembre.getString(6).trim());
      		                  r.settitreCivilite(rsMembre.getString(7).trim());
      		                  nomPrenom.add(r);
      		         		}
      		               System.out.println(nomPrenom);
      		            }
      		               catch(Exception e)
      		               {
      		                  System.out.println("Exception " + e.getMessage());
      		               }
      		         
      		            jComboBoxNom.setSelectedIndex(-1);
      		            jComboBoxNom.addActionListener(
      		                  new java.awt.event.ActionListener()
      		                  {
      		                     public void actionPerformed(ActionEvent ae)
      		                     {	
      		                        infos.clear();
      		                        String nomPre = jComboBoxNom.getSelectedItem().toString();
      		                        System.out.println("+++++++++++++++++++++++>>>> Nom prénom: " + nomPre);
      		                        int ind = nomPre.indexOf(" ");
      		                        String nom = nomPre.substring(0, ind);
      		                        jTextFieldNomMembre.setText(nom);
      		                        
      		                        ind = nomPre.lastIndexOf(" ");
      		                        String prenom = nomPre.substring(ind +1);
      		                        jTextFieldPrenomMembre.setText(prenom);
      		                        rsMembre = Select.ListeMembre(); 
      		                        try
      		                        {
      		                           while (rsMembre.next())
      		                           {
      		                              System.out.println("on a bien next...");
      		                              String nompersonne = rsMembre.getString("nompersonne");
      		                              System.out.println("nompersonne " + "\"" + nompersonne + "\"");
      		                           	  nompersonne = nompersonne.trim();
      		                           	  
      		                              if(nompersonne.equals(nom))
      		                              {
      		                                 System.out.println("on a bien égalité...");
      		                                 String numgroupe = rsMembre.getString("numgroupe");
      		                                 for(int index = 0; index < nbreGroupes; index++)
      		                                 {
      		                                    jComboBoxNumeroGroupe.setSelectedIndex(index);
      		                                    String nGroup = jComboBoxNumeroGroupe.getSelectedItem().toString();
      		                                    if(numgroupe.equals(nGroup))
      		                                       break;
      		                                 }
      		                                 
      		                                 String numpersonne = rsMembre.getString("numpersonne");
      		                                 
      		                              // Attention car ici on n'est pas certain d'avoir toutes les responsabilités
      		                              // J'ai d'ailleurs déjà ajouté Coiffeuse pour le cas de Coiffard Pauline.
      		                              // Chaque fois qu'un cas similaire se présentera il faudra recompiler
      		                              // Tu seras d'accord avec moi que ce n'est pas acceptable
      		                              // Mais supposons tout de même qu'on soit certain d'avoir tout avec:
      		                              // Chauffeur, Maquilleuse, Coiffeuse, Habilleur, Dirigeant et Trésorier
      		                                 String responsabilitemembre = rsMembre.getString("responsabilitemembre");
      		                                 //String resp = "";
      		                                 for(int index = 0; index < 5; index++)
      		                                 {
      		                                    jComboBoxResponsabilité.setSelectedItem(index);
      		                                    String resp = jComboBoxResponsabilité.getSelectedItem().toString();
      		                                 
      		                                    if(resp.equals(responsabilitemembre))
      		                                    {
      		                                       break;
      		                                    }
      		                                 }
      		                                   
      		                                 
      		                                 String datenaissancemembre = rsMembre.getString("datenaissancemembre");
      		                                 String prenompersonne = rsMembre.getString("prenompersonne");
      		                              
      		                              // Ici, nous sommes certains de n'avoir que 3 items: Mme, Mlle et Mr
      		                              // dis moi si je me trompe...
      		                              // on peut donc admettre que la combo soit créée en dur
      		                                 String titrecivilite = rsMembre.getString("titrecivilite");
      		                                 for(int index = 0; index < 3; index++)
      		                                 {
      		                                    jComboBoxTitre.setSelectedIndex(index);
      		                                    String civilite = jComboBoxTitre.getSelectedItem().toString();
      		                                    if(civilite.equals(titrecivilite))
      		                                    {
      		                                       break;
      		                                    }
      		                                 }
      		                                   
      		                                 jTextFieldNumeroMembre.setText(numpersonne);
      		                                 jTextFieldDate.setText(datenaissancemembre);
      		                                 System.out.println("numpersonne: " + numpersonne);
      		                                 System.out.println("datenaissancemembre: " + datenaissancemembre);
      		                                 break; 
      		                              }
      		                           }
      		                        }
      		                           catch(Exception e)
      		                           {
      		                              System.out.println("Exception " + e.getMessage());
      		                           }
      		                     }
      		                  });  
      		}                  	
      


      Je suis là si tu veux d'autres choses ou des questions.

      Encore un grand merci à toi sakoba
  • 1
  • 2
  • 3