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
A voir également:

16 réponses

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
chaimae
 
Merci Bouassida
0
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
Utilisateur anonyme
 
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
triou
 
Merci pour ces messages ça m'a bien aidé
2

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

Posez votre question
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   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
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
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
Bonjour!

quelle table? quelle colonne? d'une base de données? Quelle base de données?
0
Yserman
 
La table se nomme "Fournisseur", la colonne se nomme "Nom" de la base de donnée "BDStock"
0
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
Quel SGBD?
tu as déjà réussi à te connecter à ta base de données? as tu la librairie adéquate?
0
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
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
Es tu connecté à ta base de données avec le java? As tu utilisé le JDBC?
0
yserman
 
oui j'utilise le JDBC
0
yserman
 
dois je importer une classe pour utiliser un objet de type ResultSet?
0
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
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
0
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
lolita_ch Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
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
yakoviano Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai une lisbox et je veux mettre ses items dans une table Jtable
0
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
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