JAVA: Comment remplir une JComboBox....

Résolu
Yserman -  
 chaimae -
Voilà salut à tous

Mon problème c'est en fait que je dois remplir une JComboBox avec les valeurs d'une des colonnes d'une de mes tables.

Ca doit être assez simple mais bon...

D'avance merci

16 réponses

  1. Bouassida
     
    Une fois connecté à la base de donnés : ces instructions vous permettrons de remplir votre combo
    (j'ai essayé et ça a marché)
    /*------------------------- Method de remplissage du jComboBox ---------------------------*/
    void remplir_Jcomb() {
       String req= "SELECT Nom_Champ1,Nom_Champ2 FROM  Nom_Table  ORDER BY  Nom_Champ1"; 
    			Statement stmt;
    		
    		    try {
    	stmt = con.createStatement();
    	ResultSet res = stmt.executeQuery(req);
    	while(res.next()){
    	jComboName.addItem(res.getString(indexe de la colonne));     
    /* le nom du jComboBox est jComboName et  <indexe de la colonne > est l'indexe de la colonne dont vous voulez afficher dans le combobox ,elle peut prendre l'une des valeurs 1,2 . .  
    		}
    		res.close();
    	} catch (SQLException e) {
    	e.printStackTrace();
    		}
    			
    		}
    //Fin remplir_Jcomb()
    14
    1. chaimae
       
      Merci Bouassida
      0
  2. yserman
     
    ah j'ai trouver mer ci ca marche

    le code :

    choixfournisseur = new JComboBox ();
    choixfournisseur.setMaximumRowCount(5);
    choixfournisseur.setBounds (550, 120,150,30);
    choixfournisseur.setBackground(Color.WHITE);
    cont.add (choixfournisseur);

    Vector listenom=AccesBD.creerVecteur1Colonne("SELECT distinct Nom from Fournisseur ");
    choixfournisseur.removeAllItems();
    for(int i=0;i<listenom.size();i++)
    choixfournisseur.addItem((String)(listenom.elementAt(i)));
    3
  3. philtrain
     
    Bonjour,

    Si on regarde la documentation de la classe JComboBox, on trouve comme paramètres :
    - au niveau du constructeur: rien, un ComboBoxModel, un tableau d'Object ou un Vector;
    - au niveau des méthodes : un Object.

    cf : http://java.sun.com/j2se/1.5.0/docs/api/

    A partir de là, il suffit de récupérer les données de ta table sous une des formes citées plus haut, et d'utiliser soit un des constructeurs, soit la méthode.

    Il ya a un excellent tutoriel sur le site de Sun : "How to Use Combo Boxes"

    a+
    2
  4. triou
     
    Merci pour ces messages ça m'a bien aidé
    2
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. maily Messages postés 7560 Statut Contributeur 453
     
    Donc, tu utilises un objet Recordset?

    String query = "SELECT COF_NAME, PRICE FROM COFFEES";
    ResultSet rs = stmt.executeQuery(query);
    JComboBox j = new JComboBox();
    while (rs.next()) {
    rs.getString("NomDeLaColonne");
      j.addItem(rs.getFloat("PRICE"));
    }


    ps: Je n'ai jamais touché aux JComboBox et je ne me souvenais plus de la syntaxe des requêtes! Vive la java doc et le site de sun
    Références:
    http://java.sun.com/j2se/1.4.2/docs/api/index.html
    http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html
    1
  7. manana007
     
    Bonjour,
    j'essaie de remplir un jCombox à partir d'une base de donnée (serveur MySQL) mais en affichant l'interface j'ai un boucle infinie je ne peut pas corriger cette erreur
    SVP aider moi à résoudre ce problème (je travaille en NetBeans)
    voici le code
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    package asterisk_teste;

    /**
    *
    * @author
    */
    import java.sql.*;
    import java.io.*;
    import java.util.*;
    import java.sql.DriverManager;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.ComboBoxModel;
    import javax.swing.DefaultListModel;
    import javax.swing.event.ListDataListener;
    public class SQLrequete

    { public static Administrateur ad =new Administrateur();
    public ResultSet rs1 ;

    public SQLrequete() throws SQLException
    {
    try {
    Connection connection;
    BaseDeDonnee basededonnee = new BaseDeDonnee ();
    rs1=basededonnee.rs;

    } catch (ClassNotFoundException ex) {
    Logger.getLogger(SQLrequete.class.getName()).log(Level.SEVERE, null, ex);
    }

    // ad.Terminal.setModel(model);
    // ad.setVisible(true);

    }
    public static void main(String[] args) throws SQLException
    { //SQLrequete teste =new SQLrequete();

    try {
    //Connection connection;
    BaseDeDonnee basededonnee = new BaseDeDonnee ();
    // teste.rs1=basededonnee.rs;
    // teste.model=basededonnee.getListModelFromResultSet(basededonnee.rs);

    } catch (ClassNotFoundException ex) {

    Logger.getLogger(SQLrequete.class.getName()).log(Level.SEVERE, null, ex);
    }

    //teste.ad.Terminal.setModel(model);
    // teste.ad.setVisible(true);

    }

    }
    class BaseDeDonnee
    {
    public Connection connection = null ;
    public ResultSet rs ;
    public Statement stmt;
    public String requete;
    public Administrateur ad =new Administrateur();
    public DefaultListModel model;
    public BaseDeDonnee() throws ClassNotFoundException, SQLException
    { System.out.println("\n+++++++++++++++++++");
    connexion();
    System.out.println("\n++++++++++++++++++++++");
    stmt = connection.createStatement();
    requete = "SELECT * FROM terminal ORDER BY Num ASC LIMIT 0 , 30";
    System.out.println("\n=======================");
    rs=affichage(requete);
    this.getModelFromResultSet(affichage(requete));
    ad.setVisible(true);
    System.out.println("\n====================");
    fin_connexion();
    }

    // Connexion à la base de donnees
    public void connexion () throws ClassNotFoundException, SQLException
    {
    try
    {
    // Chargement des drivers SQL
    System.out.println("\n------------------------");
    System.out.println("Connexion au driver JDBC.");
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    System.out.println("Driver com.mysql.jdbc.Driver chargé.");
    }
    catch (ClassNotFoundException a)
    {
    System.out.println ("Driver non trouve.");
    }
    catch (Exception b)
    {
    System.out.println ("Problème sur chargement de driver JDBC.");
    }

    try
    {
    // Etablissement de la connexion avec la base
    String url1 = "jdbc:mysql://127.0.0.1:3306/Asteriskteste";
    connection = DriverManager.getConnection(url1,"root","bandia007");
    System.out.println("Connexion a la base établie.");
    System.out.println("------------------------\n");
    }
    catch (SQLException c)
    {
    System.out.println ("Connexion refuse ou base inconnu.");
    }
    catch (Exception d)
    {
    System.out.println ("Problème sur connexion.");
    }
    }
    public ResultSet affichage(String req)
    {
    // ResultSet rs = null;
    int i=1;

    try
    {
    //Exécution des requêtes
    //requete = "INSERT INTO `Terminal` ( `Terminal_nom` ) VALUES ( 'EGG' )";
    //requete = "SELECT * FROM terminal ORDER BY Num ASC LIMIT 0 , 30";
    rs = stmt.executeQuery(requete);
    // Statement stmt = connection.createStatement() ;
    //String queryString = "INSERT INTO terminal ( Nom ) VALUES ( 'softphone_mouna' )";
    // String nom ="401";
    // String nom1 ="400";
    // String queryString = "select Num from terminal " ;
    // String queryString1 =req;

    //int update = stmt.executeUpdate(queryString);
    //int update1 = stmt.executeUpdate(queryString1);
    System.out.println (rs);
    while (rs.next())
    {
    System.out.println("Nom : " +rs.getString(1));
    System.out.println("Num : " +rs.getString(2));
    System.out.println("State :" +rs.getString(3));
    System.out.println(""+i);
    i++;

    }

    }
    catch (SQLException d)
    { d.getSQLState();
    d.getErrorCode();
    System.out.println ("Problème la requete.");
    System.out.println ("Problème la requete." +d.getErrorCode()+d.getSQLState());
    }
    return rs;
    }
    public void getModelFromResultSet(ResultSet rs) throws SQLException {
    ComboBoxModel model = new ComboBoxModel() {

    public void setSelectedItem(Object anItem) {
    throw new UnsupportedOperationException("Not supported yet.");
    }

    public Object getSelectedItem() {
    throw new UnsupportedOperationException("Not supported yet.");
    }

    public int getSize() {
    throw new UnsupportedOperationException("Not supported yet.");
    }

    public Object getElementAt(int index) {
    throw new UnsupportedOperationException("Not supported yet.");
    }

    public void addListDataListener(ListDataListener l) {
    throw new UnsupportedOperationException("Not supported yet.");
    }

    public void removeListDataListener(ListDataListener l) {
    throw new UnsupportedOperationException("Not supported yet.");
    }
    };
    while (rs.next()) {
    rs.getString("NomDeLaColonne");
    ad.NumDial.addItem(rs.getString(1));
    }

    }
    public void fin_connexion()
    {
    try
    {
    // Fermeture de la connexion
    connection.close();
    System.out.println("\n------------------------");
    System.out.println ("Fermeture de connexion.");
    System.out.println("------------------------\n");
    }
    catch (Exception d)
    {
    System.out.println ("Problème sur la fermeture de connexion.");
    }
    }
    }
    merci d'avance
    1
  8. maily Messages postés 7560 Statut Contributeur 453
     
    Bonjour!

    quelle table? quelle colonne? d'une base de données? Quelle base de données?
    0
  9. Yserman
     
    La table se nomme "Fournisseur", la colonne se nomme "Nom" de la base de donnée "BDStock"
    0
    1. maily Messages postés 7560 Statut Contributeur 453
       
      Quel SGBD?
      tu as déjà réussi à te connecter à ta base de données? as tu la librairie adéquate?
      0
  10. yserman
     
    oui oui je suis connecté a ma base , je l'ai créée avec access et je code en SQL

    c'est juste pour récupérer les valeurs de la colonne pour les mettre dans ma JComboBox
    0
  11. maily Messages postés 7560 Statut Contributeur 453
     
    Es tu connecté à ta base de données avec le java? As tu utilisé le JDBC?
    0
  12. john
     
    Quel nul ce maily !

    Qu'importe quelle table? quelle colonne? d'une base de données? Quelle base de données?

    Connecte-toi a la base de donnee, la table et la colonne que tu veux.
    a l'aide d'un PrepareStatment.

    Itere sur l'objet ResultSet que tu obtiens et contiens les valeurs de ta colonne.

    Rempli un object Vector avec.

    Et instancie ta ComboBox. Voila, c'est tout.
    Et si tu veux faire pro, utilise Apache common-dbutils (pour l'acces a la BD) et Apache commons-beansutils pour la creation dynamique d'un combo, d'une table ou que sais-je avec , puisque ce dernier permet de creer dynamiquement un bean en prenant comme parametre le resultset.
    0
    1. lolita_ch Messages postés 1 Statut Membre
       
      Bonjour!!

      Si quelqu'un a un exemple pr recupérer les element d'une colonne et les mettre d'une base de donnée, qu'il me l'ecrit
      j'ai essayé bcp de trucs mais ça ne marche pas

      merci d'avance
      0
  13. yakoviano Messages postés 9 Statut Membre
     
    J'ai une lisbox et je veux mettre ses items dans une table Jtable
    0
  14. manjava
     
    Bonjour,

    Suite à votre discusion concerne le jcomboBox je veux savoir comment remplir un jtable avec une selection d'un element de jcombobox:
    je veux explique que j'ai deux table dans la base de donnee Mysql :table forme(Code_f,Nom_f), table Produit(Code_p,Code_f,.......)
    le combobox est remplir avec une Nom_f quand je selection le jcomboBox un jtable doit afficher le correspondant de Nom_f

    c'est mon probleme j'essai avec AbstractTableModel mais ca marche pas je sais pas comment faire j'ai besoin une idée SVP

    Merci Cordialement
    0
  15. omiss
     
    Bonjour
    je trouve un problem avec l'insruction de Jcombobox et j'ai pas trouve la solution SVP aider moi

    le problem et j'ai un JCombobox remplir par les base donne Sql et je veux qaund je choisir une base donne a partir de JCombobox la connection sera change comme truc de annalyseur de requette
    Merci
    0