JAVA: Cómo llenar un JComboBox....

Resuelto
Yserman -  
 chaimae -
Hola a todos

Mi problema es en realidad que tengo que llenar un JComboBox con los valores de una de las columnas de una de mis tablas.

Debería ser bastante sencillo, pero bueno...

Gracias de antemano

16 respuestas

Bouassida
 
Una vez conectado a la base de datos: estas instrucciones te permitirán rellenar tu combo
(he probado y funcionó)
/*------------------------- Método de relleno del 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(<índice de la columna>)); /* el nombre del jComboBox es jComboName y <índice de la columna> es el índice de la columna que deseas mostrar en el combobox ,puede tomar uno de los valores 1,2 . . } res.close(); } catch (SQLException e) { e.printStackTrace(); } }
//Fin remplir_Jcomb()
14
chaimae
 
Gracias Bouassida
0
yserman
 
ah encontré gracias, funciona

el código:

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
Usuario anónimo
 
Hola,

Si miramos la documentación de la clase JComboBox, encontramos como parámetros:
- a nivel del constructor: nada, un ComboBoxModel, un arreglo de Object o un Vector;
- a nivel de los métodos: un Object.

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

Partiendo de ahí, solo tienes que recuperar los datos de tu tabla en una de las formas mencionadas anteriormente y usar ya sea uno de los constructores o el método.

Hay un excelente tutorial en el sitio de Sun: "Cómo usar Combo Boxes"

a+

--
-- O espíritu de la libertad --
2
triou
 
Gracias por estos mensajes, me ha ayudado mucho.
2
maily Mensajes publicados 7560 Estado Colaborador 453
 
¿Entonces, usas un objeto 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")); }


pd: ¡Nunca he trabajado con JComboBox y no recordaba la sintaxis de las consultas! ¡Viva la java doc y el sitio de sun!
Referencias:
http://java.sun.com/j2se/1.4.2/docs/api/index.html
http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html
--
Maily
¡Ragondin, ve a la esquina!
1
manana007
 
Hola,
estoy tratando de llenar un jCombox a partir de una base de datos (servidor MySQL), pero al mostrar la interfaz tengo un bucle infinito y no puedo corregir este error.
Por favor, ayúdame a resolver este problema (trabajo en NetBeans).
aquí está el código
/*
* Para cambiar esta plantilla, elija Herramientas | Plantillas
* y abra la plantilla en el 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();
}

// Conexión a la base de datos
public void connexion () throws ClassNotFoundException, SQLException
{
try
{
// Carga de los controladores SQL
System.out.println("\n------------------------");
System.out.println("Conexión al controlador JDBC.");
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Controlador com.mysql.jdbc.Driver cargado.");
}
catch (ClassNotFoundException a)
{
System.out.println ("Controlador no encontrado.");
}
catch (Exception b)
{
System.out.println ("Problema con la carga del controlador JDBC.");
}

try
{
// Establecimiento de la conexión con la base
String url1 = "jdbc:mysql://127.0.0.1:3306/Asteriskteste";
connection = DriverManager.getConnection(url1,"root","bandia007");
System.out.println("Conexión a la base establecida.");
System.out.println("------------------------\n");
}
catch (SQLException c)
{
System.out.println ("Conexión rechazada o base desconocida.");
}
catch (Exception d)
{
System.out.println ("Problema con la conexión.");
}
}
public ResultSet affichage(String req)
{
// ResultSet rs = null;
int i=1;

try
{
//Ejecución de las consultas
//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 ("Problema con la consulta.");
System.out.println ("Problema con la consulta." +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("No soportado aún.");
}

public Object getSelectedItem() {

throw new UnsupportedOperationException("No soportado aún.");
}

public int getSize() {

throw new UnsupportedOperationException("No soportado aún.");
}

public Object getElementAt(int index) {

throw new UnsupportedOperationException("No soportado aún.");
}

public void addListDataListener(ListDataListener l) {

throw new UnsupportedOperationException("No soportado aún.");
}

public void removeListDataListener(ListDataListener l) {

throw new UnsupportedOperationException("No soportado aún.");
}
};
while (rs.next()) {
rs.getString("NomDeLaColonne");
ad.NumDial.addItem(rs.getString(1));
}

}
public void fin_connexion()
{
try
{
// Cierre de la conexión
connection.close();
System.out.println("\n------------------------");
System.out.println ("Cierre de conexión.");
System.out.println("------------------------\n");
}
catch (Exception d)
{
System.out.println ("Problema con el cierre de conexión.");
}
}
}
gracias de antemano
1
maily Mensajes publicados 7560 Estado Colaborador 453
 
¡Hola!

¿qué tabla? ¿qué columna? ¿de una base de datos? ¿qué base de datos?

--
Maily
¡Ragondin, ve a la esquina!
0
Yserman
 
La tabla se llama "Proveedor", la columna se llama "Nombre" de la base de datos "BDStock"
0
maily Mensajes publicados 7560 Estado Colaborador 453
 
¿Qué SGBD?
¿Ya lograste conectarte a tu base de datos? ¿Tienes la librería adecuada?
--
Maily
¡Ragondin, ve a la esquina!
0
yserman
 
sí, sí, estoy conectado a mi base, la creé con Access y codifico en SQL

es solo para recuperar los valores de la columna y ponerlos en mi JComboBox
0
maily Mensajes publicados 7560 Estado Colaborador 453
 
¿Estás conectado a tu base de datos con Java? ¿Has utilizado JDBC?
--
Maily
¡Ragondin, ve a la esquina!
0
yserman
 
sí, uso JDBC
0
yserman
 
¿Debo importar una clase para usar un objeto del tipo ResultSet?
0
maily Mensajes publicados 7560 Estado Colaborador 453
 
Sí, dado que vas a usar un nuevo objeto de Java y de lo contrario no compilarás.
Mira este enlace, entenderás todo lo relacionado con las bases de datos en Java: http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html
--
Maily
¡Ragondin, ve a la esquina!
0
john
 
¡Qué terrible este correo electrónico!

¿Qué importa qué tabla? ¿qué columna? ¿de una base de datos? ¿Qué base de datos?

Conéctate a la base de datos, a la tabla y a la columna que quieras.
con la ayuda de un PrepareStatement.

Itera sobre el objeto ResultSet que obtienes y contiene los valores de tu columna.

Rellena un objeto Vector con ello.

Y crea tu ComboBox. Voilà, eso es todo.
Y si quieres hacerlo profesional, utiliza Apache common-dbutils (para el acceso a la base de datos) y Apache commons-beansutils para la creación dinámica de un combo, de una tabla o lo que sea, ya que este último permite crear dinámicamente un bean tomando como parámetro el resultset.
0
lolita_ch Mensajes publicados 1 Estado Miembro
 
¡Hola!!

Si alguien tiene un ejemplo para recuperar los elementos de una columna y ponerlos en una base de datos, que me lo escriba
he intentado muchas cosas pero no funciona

gracias de antemano
0
yakoviano Mensajes publicados 9 Estado Miembro
 
Tengo un lisbox y quiero poner sus elementos en una tabla Jtable.
0
manjava
 
Hola,

Tras su discusión sobre el jcomboBox, quiero saber cómo llenar un jtable con la selección de un elemento del jcombobox:
quiero explicar que tengo dos tablas en la base de datos MySQL: tabla forme (Code_f, Nom_f), tabla Producto (Code_p, Code_f, .......)
el combobox se llena con un Nom_f y cuando selecciono el jcomboBox, un jtable debe mostrar el correspondiente a Nom_f

ese es mi problema, he intentado con AbstractTableModel pero no funciona, no sé cómo hacerlo, necesito una idea por favor

Gracias, cordialmente
0
omiss
 
Hola
encuentro un problema con la instrucción de JCombobox y no he encontrado la solución, por favor ayúdame

el problema es que tengo un JCombobox que se llena con las bases de datos SQL y quiero que cuando elija una base de datos a partir del JCombobox, la conexión cambie como un parseador de consultas
Gracias
0