Aide java JCombobox,

Résolu
supupoff Messages postés 350 Statut Membre -  
hanaeb Messages postés 2 Statut Membre -
Bonjour,

J'arrive a remplir un JCombobox a l'aide de requete sql

      s = c.createStatement();
			rs =s.executeQuery("SELECT num,nom FROM  projet");
			while(rs.next()){
			combo1.addItem(rs.getString("nom"));

je voudrai une fois un nom est selectionne ,recuperer le numero qui servira d'identifiant le projet pour l'autre traitement,

Aide svp,

merci de m'aide
Merci d'avance

--
La chance aide parfois, le travail toujours.

4 réponses

  1. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    Mais le numéro existe déjà?

    Et si oui où est-il stocké?
    0
    1. supupoff Messages postés 350 Statut Membre 34
       
      le numéro est stocké dans Base de donnée dans Table projet, ;)
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Il y a plusieurs manière de faire, par exemple en stockant les num dans une map et les associer aux noms :

    final TreeMap<String,Integer> map = new TreeMap<String,Integer>();
    final JComboBox<String> combo1 = new JComboBox<String>();
    
    s = c.createStatement();
    rs =s.executeQuery("SELECT num,nom FROM  projet");
    while(rs.next())
    {
    	int num = rs.getInt("num");
    	String nom = rs.getString("nom");
    	combo1.addItem(nom);
    	map.put(nom,num);
    }
    
    combo1.addActionListener(new ActionListener()
    {
    	public void actionPerformed(ActionEvent e)
    	{
    		String nom = combo1.getSelectedItem();
    		int num = map.get(nom);
    		System.out.printf("(%s,%d) selected",nom,num);
    	}
    });

    Il est également tout à fait possible aussi d'ajouter autre chose qu'un String à un JComboBox, en particulier on pourrait ajouter un objet qui stockerai tes deux informations. C'est alors la méthode toString qui sera utilisé pour l'affichage.

    class Id
    {
    	public final String nom;
    	public final int num;
    	
    	public Id(String nom,int num)
    	{
    		this.nom = nom;
    		this.num = num;
    	}
    	
    	public String toString()
    	{
    		return nom;
    	}
    }
    
    final JComboBox<Id> combo1 = new JComboBox<Id>();
    
    s = c.createStatement();
    rs =s.executeQuery("SELECT num,nom FROM  projet");
    while(rs.next())
    {
    	int num = rs.getInt("num");
    	String nom = rs.getString("nom");
    	combo1.addItem(new Id(nom,num));
    }
    
    combo1.addActionListener(new ActionListener()
    {
    	public void actionPerformed(ActionEvent e)
    	{
    		Id id = combo1.getSelectedItem();
    		System.out.printf("(%s,%d) selected",id.nom,id.num);
    	}
    });
    0
    1. supupoff Messages postés 350 Statut Membre 34
       
      Merci beaucoup KX, tu m'aide beaucoup, je vais essayer et je revenir pour tu dire c que passe
      0
    2. supupoff Messages postés 350 Statut Membre 34
       
      Salut,

      je créer cette méthode pour l'affichage du liste user

       public void fillJCBOX1()
        {
            connexion c = new connexion();
              try {
                  Statement s ;
                   ResultSet rs ;
                 s = c.createStatement(); // indiqué das l'erreurs si j'enlève le try catch : 204
           rs =s.executeQuery("SELECT * FROM  user"); // ligne indiqué  l'erreur : 205
        
           while(rs.next())
           {
                   int num = rs.getInt("id");
                   String nom = rs.getString("Nom");
                   String prenom = rs.getString("Prenom");
                   System.out.println("dans jcombo"+prenom);
                   jComboBox1.addItem(new Id(nom,prenom,num));
           }  } catch (Exception ex) {
                   ex.printStackTrace();
              }
        }
      


      retourn les erreurs suvantes :

      java.lang.NullPointerException
      	at JfrAdministrator.fillJCBOX1(JfrAdministrator.java:205)
      	at JfrAdministrator.formWindowOpened(JfrAdministrator.java:1366)
      	at JfrAdministrator.access$000(JfrAdministrator.java:20)
      	at JfrAdministrator$1.windowOpened(JfrAdministrator.java:311)
      	at java.awt.Window.processWindowEvent(Window.java:2048)
      	at javax.swing.JFrame.processWindowEvent(JFrame.java:296)
      	at java.awt.Window.processEvent(Window.java:2009)
      	at java.awt.Component.dispatchEventImpl(Component.java:4861)
      	at java.awt.Container.dispatchEventImpl(Container.java:2287)
      	at java.awt.Window.dispatchEventImpl(Window.java:2719)
      	at java.awt.Component.dispatchEvent(Component.java:4687)
      	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
      	at java.awt.EventQueue.access$200(EventQueue.java:103)
      	at java.awt.EventQueue$3.run(EventQueue.java:688)
      	at java.awt.EventQueue$3.run(EventQueue.java:686)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
      	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
      	at java.awt.EventQueue$4.run(EventQueue.java:702)
      	at java.awt.EventQueue$4.run(EventQueue.java:700)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
      	at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
      	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
      	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
      	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
      	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
      	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
      	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
      BUILD SUCCESSFUL (total time: 10 seconds)
      



      et si j'enlève le try catch
      J'obtient les erreurs suivant

      Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - unreported exception java.sql.SQLException; must be caught or declared to be thrown
       
      	at JfrAdministrator.fillJCBOX1(JfrAdministrator.java:204)
      	at JfrAdministrator.formWindowOpened(JfrAdministrator.java:1364)
      	at JfrAdministrator.access$000(JfrAdministrator.java:20)
      


      Merci beaucoup,
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Java oblige que toutes les exceptions soient traitées. Tu as toute une partie de ton code qui génère des SQLException, tu es donc obligé de mettre des try/ctach pour les traiter (il n'est donc pas question de les enlever)

      Pour le NullPointerException, je ne comprends pas. Si tes lignes sont correctes, la on a "s" qui vaut "null", or il n'est pas prévu que createStatement() puisse renvoyer "null"...
      0
    4. supupoff Messages postés 350 Statut Membre 34
       
      Merci pour ta réponse,
      j'ai crée méthode selection dans class connexion
       public ResultSet selection(String req){ 
              ResultSet res = null; 
               
              try{ 
                  rst = con.createStatement(); 
                  res = rst.executeQuery(req); 
                  res.beforeFirst(); 
              } catch(SQLException er){ 
                  System.out.print("error sql : "+er); 
              } 
               
              return res; 
          } 
      

      et je fait appel
      rs =c.selection("SELECT * FROM user");

      et sa cool bien

      je veux passé maintenant au deuxième étape ( l'insertion dans la base ), je vais essayer et je revenir pour tu dire ce que passe, merci,
      0
    5. supupoff Messages postés 350 Statut Membre 34
       
      Bon l'insertion sa cool bien aussi merci KX pour l'idée et pour l'aide,

      j'ai un petit souci :

      j'ai une JTable qui contient resultat d'une select, je veux lorsque je selectionne un enregistrement du Jtable s'affiche dans le champs du formulaire,

      j'ai créer dans Jtable un champs caché ( id ) pour le traitement,

      j'ai utilise pour les JTextField
      int rec = this.jTable3.getSelectedRow();      
      this.jTextField17.setText(jTable3.getValueAt(rec, 0).toString());

      ..
      mais pour JCombobox, je veux qu'il soit ajouter au début du liste déjas dans JCombobox mais j'arrive pas ' ajouter sélection que si je remove All Item,
      String NM = this.jTable3.getValueAt(rec, 2).toString();      
      String PR =jTable3.getValueAt(rec, 3).toString();      
       Récupéré champ caché    
        Int  NU  =this.jTable3.getValueAt(rec, 4).toString();  // ici erreur !!       
      
      this.jComboBox1.removeAllItems();      
       this.jComboBox1.addItem(new Id(NM,PR,NU)); 
      0
  3. hanaeb Messages postés 2 Statut Membre
     
    Bonjour , s'il vous plait puisque vous êtes parvenu à résoudre ce problème donc vous saurez a priori comment faire pour la mise à jour d'un Jtable à partir de la sélection de mon jcombobox . Je m'explique: j'ai un jtable qui affiche toutes les informations concernant un archive par service et il y'a plusieurs services. mon jcombobox contient les service: je veux afficher tous les archives qui sont affectés à un service donnée une fois je sélectionne le service sur le jcombobox ... AIDEZ moi svvvp je fais une application pour mon stage et il me reste plus que 3 jours pour l'achever :( :(
    0
  4. hanaeb Messages postés 2 Statut Membre
     
    le problème est que l'affichage sur le jtable se fait juste pour l'item sélectionné par défaut une fois je sélectionne un autre aucun changement ne se fait .. :/ quelqu'un pourra t'il m'aider svp ?!!
    0