JAVA: Cómo llenar un JComboBox....
Resuelto
Yserman
-
chaimae -
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
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
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 ---------------------------*/
(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()
chaimae
Gracias Bouassida
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)));
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)));
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 --
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 --
¿Entonces, usas un objeto Recordset?
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!
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!
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
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
¡Hola!
¿qué tabla? ¿qué columna? ¿de una base de datos? ¿qué base de datos?
--
Maily
¡Ragondin, ve a la esquina!
¿qué tabla? ¿qué columna? ¿de una base de datos? ¿qué base de datos?
--
Maily
¡Ragondin, ve a la esquina!
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
es solo para recuperar los valores de la columna y ponerlos en mi JComboBox
¿Estás conectado a tu base de datos con Java? ¿Has utilizado JDBC?
--
Maily
¡Ragondin, ve a la esquina!
--
Maily
¡Ragondin, ve a la esquina!
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!
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!
¡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.
¿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.
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
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
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
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