Affichage de données dans une JTable selon le choix fait dans une JCombobox [Résolu]

langagec08 72 Messages postés mardi 30 mars 2010Date d'inscription 22 août 2011 Dernière intervention - 5 avril 2011 à 15:15 - Dernière réponse : langagec08 72 Messages postés mardi 30 mars 2010Date d'inscription 22 août 2011 Dernière intervention
- 7 avril 2011 à 21:31
Bonjour ,
voila mon problème j'ai une JCombobox contenant les différents nom de manager, je veux que lorsque l'utilisateur fait un choix j'affiche tout les employés de ce manager,
dans le code que j'ai fait dés que j'ouvre ma fenetre seul le premier manager dans ma liste et leur employés sont afficher et mème si je change le choix rien ne se passe, voila mon code :
// la liste de manager
public class Liste extends JComboBox {
   public Liste() {}
public Liste(String[] tab) {
super(tab);
setPreferredSize(new Dimension(150,30));
    addItemListener(new ItemState());
}

public JPanel definirliste(String lab){
JPanel pan=new JPanel() ;pan.setBackground(Color.WHITE);
  JLabel labNom = new JLabel(lab);
  pan.add(labNom);
  pan.add(this);
  return pan ;
}
public String retourneitemlist(){
String lis ;ItemEvent e;
//this.addItemListener(new ItemState());
this.addActionListener(new ItemAction() );
this.addItemListener(new ItemState());
lis = (String) this.getSelectedItem();
 return lis ;
}
class ItemState extends JComboBox implements ItemListener{
        public void itemStateChanged(ItemEvent e) {
        }
        }
}

 class ItemAction implements ActionListener{
 
         public void actionPerformed(ActionEvent e) {
               
         }               
 }

}

// le code de données selectionner depuis ma base de données pour les envoyés a ma jtable
public class DataTableau {

public DataTableau(){}
public String[][] remplirtableau(Object lis){
Connection laconnection;
String[][] tab=new String[100][100];
Statement transmission;
String sel=new String() ;
int a=0 ;
try{
Class.forName("com.mysql.jdbc.Driver");
laconnection=DriverManager.getConnection("jdbc:mysql://localhost:3306/gestionemploye","root","");
transmission=laconnection.createStatement();
//insertion selon  la selection
System.out.println(lis);
ResultSet res=transmission.executeQuery("select id_manager from manager where nom_manager='"+lis+"'");
ResultSetMetaData resMet = res.getMetaData();
while(res.next()) { sel=res.getString("id_manager") ;}
ResultSetMetaData resu1 = res.getMetaData();

ResultSet resultat=transmission.executeQuery("select * from employe where id_manager='"+sel+"'");
ResultSetMetaData resu = resultat.getMetaData();
int i=1;
while(resultat.next()){
tab[i-1][0]=resultat.getString("id_employe");
tab[i-1][1]=resultat.getString("nom_employe");
tab[i-1][2]=resultat.getString("E_date_naissance");
tab[i-1][3]=resultat.getString("salaire");
i++;
}

transmission.close();
           }catch(Exception ex){
 System.out.println("noooon");
                  }
          
         return tab;  
}

}


aidez moi svp
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
langagec08 72 Messages postés mardi 30 mars 2010Date d'inscription 22 août 2011 Dernière intervention - 7 avril 2011 à 21:31
3
Merci
Bonsoir je te remrci pour ta réaction voila j'ai résolu le problème il fallait en fait ajouter des listener à la liste chque fois ainsi le code qu'il fallait ajouter au autres et qui va permettre la création de la fenetre et le raffraichissement des tables est le suivant :
import java.awt.BorderLayout; 
import java.awt.Color;
import java.awt.Dimension; 
import java.awt.GridLayout; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 

public class VisualiserEmp implements ItemListener{  
 
Fenetre fenetre1; 
JScrollPane v; 
 JTable tableau ;  
String lis ;  
JPanel pan=new JPanel();  
JPanel ligne=new JPanel();  
JPanel corps=new JPanel() ;  
JPanel glob=new JPanel() ;  
Panneau haut=new Panneau ;
Panneau entete=new Panneau;
Panneau sud=new Panneau;
 
Liste listemanager=new Liste();  
SelectManager se=new SelectManager() ;  
DataTableau donne= new DataTableau() ;   
 
public VisualiserEmp() {  

listemanager=new Liste(se.Select_Manager());  
//A présent nous allons affecter un listener à cette instance avec: 
listemanager.addItemListener(this); 
 
String[] title={"id_employe","nom_employe","E_date_naissance","salaire"} ;  
 String[][] data=donne.remplirtableau(listemanager.retourneitemlist());  
 this.tableau = new JTable(data, title);	  
 fenetre1 = new Fenetre();  
  
  
v = new JScrollPane(tableau); 
corps.add(v, BorderLayout.CENTER);  
pan.setLayout(new BorderLayout());  
corps.setBackground(Color.white); 
entete.setPreferredSize(new Dimension(600,80));  
haut.setPreferredSize(new Dimension(600,70));  
haut.setLayout(new GridLayout(2,1));  
JLabel lab=new JLabel("                 ");  
haut.add(lab);  
haut.add(listemanager.definirliste("Selectionner un manager"));  
glob.setLayout(new GridLayout(2,1));  
glob.add(entete);  
glob.add(haut);  
  
  
pan.add(glob,BorderLayout.NORTH);  
sud.setPreferredSize(new Dimension(600,100));  
pan.add(corps,BorderLayout.CENTER);  
pan.add(sud,BorderLayout.SOUTH);  
fenetre1.setContentPane(pan);  
} 
 
public void itemStateChanged(ItemEvent e) {   
//String nomManager = (String) e.getItem(); 
JTable tempTab;   
   
//on rempli notre tableau selon le choix fait  
 String[] title={"id_employe","nom_employe","E_date_naissance","salaire"} ;    
 String[][] data= donne.remplirtableau(listemanager.retourneitemlist()); 
 tempTab = new JTable(data, title);	  
  
tableau.setModel(tempTab.getModel()); 
corps.add(new JScrollPane(tempTab), BorderLayout.CENTER); 
//Ici on raffraichit les fenetres 
fenetre1.repaint(); 
 pan.repaint(); 
 corps.repaint(); 

 v.repaint(); 
 tableau.repaint();
  

 
}  
} 

Merci langagec08 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de langagec08
eccsup 76 Messages postés jeudi 14 mai 2009Date d'inscription 2 août 2018 Dernière intervention - 7 avril 2011 à 17:20
0
Merci
Salut, regarde du coté de DefaultTableModel (ou qqch comme ca)...

Tu cree une methode pour ajouter/supprimer des lignes, et pares avoir fait ta requete, tu ajoute les employés grace a cela

J'ai fait une application dans ce genre il y a quelques mois et ca marchait tres bien
Commenter la réponse de eccsup

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.