JCombobox

cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011 - 24 mars 2010 à 13:45
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 11 avril 2010 à 19:41
Bonjour
j'ai cree 2 jcombobox, la liste des items du jcombobox1 est acqueris a partir d'une base de donnees et la liste du jcombobox2 representes des items qui correspondent a un item selectionnes de jcombobox1, donc ce que je veux savoir c'est :
- Comment inserer un nombre variable d'items dans une jcombobox a partir d'une base de donnees.
et comment mettre a jour le jcombobox2 afin qu'il soit sensible a la selection d'un item du jcombobox1 et affiche la liste des items respective.
Donc les 2 listes d'items peuvent changer sa depend de ma base de donnees
Alors une idee a mon probleme?
Merci beaucoup pour votre aide

14 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 14:19
Salut,

Comment tu remplis tes JComboBox ?

Pour mettre un nombre varié d'élément, il te suffit de supprimer tout les éléments, puis de les ajouter un à un soit au model du JComboBox, soit en appelant la méthode addItem selon les données récupérées dans ta base de données.

Pour remplir le second JComboBox selon la valeur sélectionnée dans le premier, il te suffit de rafraîchir les données de la seconde par une requête à ta base de données qui prend en compte la valeur sélectionnée dans la première à chaque fois que la sélection du premier jcombobox est modifiée.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
24 mars 2010 à 18:23
Bonjour
ce n'est pas assez facile
j'ai un probleme dans la mise a jour de mon 2eme jcombobox
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2010 à 18:56
Salut,

Il faut que tu le rafraîchisse à chaque fois que la sélection de ton 1èr JComboBox change (applique un ItemListener).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
10 avril 2010 à 12:21
salut,
j'ai le meme probléme,mon deuxieme jcombobox2 qui est rempli (selon l'element selectionné du premier jcombobx1)il garde les element precedentet ajoute les nouveaux,c-a-d,je ne sais pas comment faire le raffrichissement d'un jcombobx2.
merçi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
10 avril 2010 à 12:25
Salut,

Il te faut supprimer les anciens éléments avant de rajouter les nouveaux.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
10 avril 2010 à 12:40
salut;
j'ai fait une supression ;mais dés que je selectione a la deuxieme fois le jcombobox2 il devient toujour vide;voici mes codes
try[
String requete  ="select * from projet where titre='"+pjrtache1.getSelectedItem().toString()+"'";
    	System.out.println(requete);
    ResultSet rs =con.createStatement().executeQuery(requete); 
 if (rs.next()) {
System.out.println(rs.getString("titre"));
i=rs.getInt("cod_prj");
String requete1  ="select * from tache where cod_prj='"+i+"'";
    System.out.println(requete1);
    ResultSet rs1 =con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(requete1); 
if(rs1.next()){
listache.removeAllItem();
while (rs1.next())
    {  
System.out.println(rs1.getString("contenu"));
listache.addItem(rs1.getString("titre")); }}
}}}catch(SQLException e){
     	e.printStackTrace();}}				
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
10 avril 2010 à 12:52
Salut,

Il ne faut pas supprimer le contenu du jcombobox à chaque tour de boucle :
try{
listache.removeAllItem();
String requete  ="select * from projet where titre='"+pjrtache1.getSelectedItem().toString()+"'";
    	System.out.println(requete);
    ResultSet rs =con.createStatement().executeQuery(requete); 
 if (rs.next()) {
System.out.println(rs.getString("titre"));
i=rs.getInt("cod_prj");
String requete1  ="select * from tache where cod_prj='"+i+"'";
    System.out.println(requete1);
    ResultSet rs1 =con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(requete1); 
if(rs1.next()){
while (rs1.next())
    {  
System.out.println(rs1.getString("contenu"));
listache.addItem(rs1.getString("titre")); }}
}}}catch(SQLException e){
     	e.printStackTrace();}}


Sinon, pourquoi faire autant de requête ? Une seule suffit :
try{
listache.removeAllItem();
String requete  ="select tache.contenu, tache.titre from tache inner join projet ON projet.cod_prj = tache.cod_prj where projet.titre='"+pjrtache1.getSelectedItem().toString()+"'";
    	System.out.println(requete);
    ResultSet rs =con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(requete); 
 while(rs.next()) {	 
System.out.println(rs.getString("contenu"));
listache.addItem(rs.getString("titre")); }}
}
}catch(SQLException e){
     	e.printStackTrace();
}
}

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
10 avril 2010 à 16:32
meçi ça bein marcher!
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
11 avril 2010 à 01:16
salut,
aprés votre solution M.dark,maintenant j'ai un autre probleme;
mon dexieme jcombobox me pose de probleme quand je l'ajoute la methode itemlistner pour k'il maffiche d'autre element d' une table,voicile code:
//button pour acces a cette espace ou il ya les 2 jcombobox et un button enregistrer 
public void modiftacheActionPerformed(ActionEvent evt) {
System.out.println("modiftache.actionPerformed, event="+evt);


System.out.println("suptache.actionPerformed, event="+evt);
listache.removeAllItems();
cont.setText("");
contn.setText("");
crétache.setVisible(false);
modif_tache.setVisible(true);
jPanel1.setVisible(false);
vistache.setVisible(true);
String requete  ="SELECT * FROM modul WHERE cod_ens='"+tab1[0].toString()+"'";
System.out.println(requete);

try {

java.sql.ResultSet	rs = con.createStatement().executeQuery(requete);
    if(rs.next())
    { int  n=rs.getInt("cod_mod");
       // System.out.println(n);
        System.out.println("l'enregisterement est trouvé"); 
        String reqte="SELECT* FROM projet WHERE cod_mod='"+n+"'";
      ResultSet  rs1=(ResultSet) con.createStatement().executeQuery(reqte); 
 pjrtache1.removeAllItems();
     while (rs1.next()) {
   
    	System.out.println(rs1.getString("titre"));
    pjrtache1.addItem(rs1.getString("titre"));
    
    }
    
    
    }}catch(Exception e){
   	e.printStackTrace();}

}	

//remplir le dexiem combobox avec la jointure ds 2 table projet et tache

public void pjrtache1ItemStateChanged(ItemEvent evt) {
  

System.out.println("remplirpjr itemStateChanged, event="+evt);

try{
        String requete  ="select tache.contenu, tache.titre from tache inner join projet ON projet.cod_prj = tache.cod_prj where projet.titre='"+pjrtache1.getSelectedItem()+"'";
    	System.out.println(requete);
    ResultSet rs =con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(requete); 
    listache.removeAllItems();	 
    while(rs.next()) {	 
System.out.println(rs.getString("contenu"));
listache.addItem(rs.getString("titre")); }
}
catch(SQLException e){
 JOptionPane.showMessageDialog(null, "  Le projet selectionné ne contient pas des taches   ", "SUPPRIMER",JOptionPane.INFORMATION_MESSAGE) ;
 e.printStackTrace();

}	


}

 /*l'erreur    	
pour chaque selection d'un element
afficher leur information le contenu et ....
/*


public void listacheItemStateChanged(ItemEvent evt) throws SQLException {
System.out.println("listtache.itemStateChanged, event="+evt);

 ----> l'erreur java.lang.nullpointerexeption if(listache.getSelectedItem().equals(""))
 { JOptionPane.showMessageDialog(null, " la liste des taches est vide !! ", "ERREUR",JOptionPane.ERROR_MESSAGE) ;
    vistache.setVisible(false);}
  else{
  String requete1  ="select * from tache where titre='"+listache.getSelectedItem()+"'";
      System.out.println(requete1);
              ResultSet rs1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(requete1);
 
      if(rs1.next())
         { 
      x=rs1.getInt("cod_tache");
          contn.setText(rs1.getString("contenu"));
          cont.setText(rs1.getString("titre"));}

}}

}

0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
11 avril 2010 à 08:01
Salut,

Attention à bien tester dans le itemStateChanded le state de l'item justement : l'événement se déclenche 2 fois : lorsque l'item est désélectionné, et lorsque le nouvel item est sélectionné, ce qui peut provoquer des résultats inattendu si tu ne teste pas l'état de l'item :
public void listacheItemStateChanged(ItemEvent evt) throws SQLException {
  if (evt.getStateChange() ==  ItemEvent.SELECTED) {
    // faire la suite...
  }
}

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
11 avril 2010 à 19:10
salut;
j'ai changé le code avec le test en haut ;mais a chaque changement d'item iln'accede jamais a cette methode(
public void listacheItemStateChanged(ItemEvent evt) throws SQLException {
  if (evt.getStateChange() ==  ItemEvent.SELECTED) {
{

 String requete1  ="select * from tache where titre='"+listache.getSelectedItem()+"'";
      System.out.println(requete1);
              try{
      ResultSet rs1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(requete1);
          if(rs1.next())
            { 
        	 
        	 x=rs1.getInt("cod_tache");
             contn.setText.getString("contenu"));
             cont.setText(rs1.getString("titre"));
             System.out.println(contn.getText());
             System.out.println(cont.getText());
             }
          else
          {
        	  JOptionPane.showMessageDialog(null, " le projet selectioneé ne contient pas des taches !! ", "ERREUR",JOptionPane.ERROR_MESSAGE) ;
  		      
          }
  }catch(SQLException ex){
  ex.printStackTrace();
              }}     
  else { 
        JOptionPane.showMessageDialog(null, " la liste des taches est vide !! ", "ERREUR",JOptionPane.ERROR_MESSAGE) ;
    vistache.setVisible(false); 
}}
   
  }
}

on fait mon but est: a chaque selectioner d'item ,il affiche les information correspondent a partir de la table tache!!help
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
11 avril 2010 à 19:25
Salut,

Il passe au niveau du test, mais le test échoue ? (le evt.getStateChange() == ItemEvent.SELECTED est toujours à false ?)
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
11 avril 2010 à 19:31
salut;
il n' accede méme pas a cette methode.
j'ai mis message System.out.println("selectione item dans listache")au debut de la methode , mais il ne l'affiche pas;!!!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
11 avril 2010 à 19:41
Salut,

C'est que tu as un problème au niveau de l'ajout de ton listener à ton JComboBox alors.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0