JAVA: Comment remplir une JComboBox.... [Résolu/Fermé]

Signaler
-
 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

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Merci Bouassida
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)));

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+
Merci pour ces messages ça m'a bien aidé
Messages postés
7554
Date d'inscription
lundi 26 juin 2000
Statut
Contributeur
Dernière intervention
13 août 2018
446
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
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
Messages postés
7554
Date d'inscription
lundi 26 juin 2000
Statut
Contributeur
Dernière intervention
13 août 2018
446
Bonjour!

quelle table? quelle colonne? d'une base de données? Quelle base de données?
La table se nomme "Fournisseur", la colonne se nomme "Nom" de la base de donnée "BDStock"
Messages postés
7554
Date d'inscription
lundi 26 juin 2000
Statut
Contributeur
Dernière intervention
13 août 2018
446
Quel SGBD?
tu as déjà réussi à te connecter à ta base de données? as tu la librairie adéquate?
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
Messages postés
7554
Date d'inscription
lundi 26 juin 2000
Statut
Contributeur
Dernière intervention
13 août 2018
446
Es tu connecté à ta base de données avec le java? As tu utilisé le JDBC?
oui j'utilise le JDBC
dois je importer une classe pour utiliser un objet de type ResultSet?
Messages postés
7554
Date d'inscription
lundi 26 juin 2000
Statut
Contributeur
Dernière intervention
13 août 2018
446
Oui, vu que tu vas utiliser un nouvel objet java et que sinon tu ne compileras pas.
Regarde ce lien, tu comprendras tout ce qui touche aux bases de données avec java : http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html
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.
Messages postés
1
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
26 juillet 2007

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
Messages postés
9
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
30 juillet 2007

J'ai une lisbox et je veux mettre ses items dans une table Jtable
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
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