Java - Seleccionar Item en Jcombobox Java (Netbeans)

 
Vista:
Imágen de perfil de Kendal

Seleccionar Item en Jcombobox Java (Netbeans)

Publicado por Kendal (3 intervenciones) el 10/06/2015 18:18:29
Hola, Tengo un gran problema el cual no he podido resolver. Necesito traer datos desde Mysql, el asunto es que algunos datos obtenidos deben seleccionarse desde una lista en un JCombobox y anteriormente esto me era muy fácil, pero ahora estoy ocupando otra estructura de manejo de los JCombobox (donde recupero el Ítem y el id). Funciona a la perfección me trae los datos y sus respectivos id. Anteriormente solo hacia un JCombobox .setSelectItem(" nombre_ítem"); y listo, pero con la nueva estructura eso no servirá. Necesito ayuda, ya que he intentado muchas formas de mostrar el ítem pero no hay caso. En resumen, necesito mostrar un ítem por comparación para que el JCombobox muestre el dato que seleccione desde la lista que contiene.

Aqui el codigo, de antemano muchas gracias!.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Inicio de Metodo IdCmbPagoRealizado-----------------------------------------------------------------------------------------------------
	//Este método obtiene datos a través del método "MostrarComboBoxFormaDePago" y la Clase "CmbObtener".
    //Este método se ejecutara en el evento "ItemChanged" del JCombobox e insertara el id del Ítem seleccionado
    //en la variable idCmbPagoRealizado.
 
    public void IdCmbPagoRealizado() {
        CmbObtener CmbObtener = (CmbObtener) cmbFormaDePagoRealizado.getSelectedItem();
        String id = CmbObtener.getID();
        idCmbPagoRealizado = Integer.parseInt(id);
    }
    //---Fin cargar combobox con Item e ID.....
    //--------------------------------------------------------------------------------------------------------------------------------------------------------  
 
	//--Inicio proceso de carga de datos (Ítem e ID) en Jcombobox... 
    public void MostrarComboBoxFormaDePago() {
        DefaultComboBoxModel value1;
        try {
            Conexion.conectar();
            ResultSet objResultSet;
            StrSql = "SELECT * FROM view_forma_de_pagos";
            Conexion.sentencia = Conexion.conn.prepareStatement(StrSql);
            objResultSet = Conexion.sentencia.executeQuery(StrSql);
 
            value1 = new DefaultComboBoxModel();
            cmbFormaDePagoRealizado.setModel(value1);
 
            while (objResultSet.next()) {
                value1.addElement(new CmbObtener(objResultSet.getString("forma_pago"), objResultSet.getString("id_forma_pago")));
            }
 
        } catch (Exception ex) {
            System.out.println(ex.getCause());
 
    }
    // Fin Carga de Combobox----------------------------------------------------------------------------------------------------------------------
 
 
	//Clase CmbObtener--------------------------------------------------------------------------------------------------------------------------
	public class CmbObtener {
 
    private String datoItem;
    private String id;
 
    public CmbObtener(String datoItem, String id) {
        this.datoItem = datoItem;
        this.id = id;
    }
 
    public String getID() {
        return id;
    }
 
    public String toString() {
        return datoItem;
    }
    }
    //Fin clase Obtener --------------------------------------------------------------------------------------------------------------------------------
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Seleccionar Item en Jcombobox Java (Netbeans)

Publicado por Mauricio (1 intervención) el 10/06/2015 19:20:19
Hola: :D

Haber si te sirve de esta manera.
Saludos!!!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
DefaultComboBoxModel value1;
 
        try {
 
            Conexion.conectar();
 
            ResultSet objResultSet;
 
            StrSql = "SELECT * FROM view_forma_de_pagos";
 
            Conexion.sentencia = Conexion.conn.prepareStatement(StrSql);
 
            objResultSet = Conexion.sentencia.executeQuery(StrSql);
 
 
 
            value1 = new DefaultComboBoxModel();
 
            cmbFormaDePagoRealizado.setModel(value1);
 
 
 
            while (objResultSet.next()) {
              //Cambia addElement por addItem
                value1.addItem(new CmbObtener(objResultSet.getString("forma_pago"),    objResultSet.getString("id_forma_pago")));
 
            }
 
 
 
 
        } catch (Exception ex) {
 
            System.out.println(ex.getCause());
 
 
 
    }
 
    // Fin Carga de Combobox----------------------------------------------------------------------------------------------------------------------

y para el escucha :
1
2
3
4
5
public void actionPerformed(ActionEvent e)
    {
        CmbObtener item = (ICmbObtener)comboBox.getSelectedItem();
        System.out.println( item.getId() + " : " + item.getID() );
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kendal

Seleccionar Item en Jcombobox Java (Netbeans)

Publicado por Kendal (3 intervenciones) el 10/06/2015 20:13:05
Gracias por tu respuesta Mauricio, mira tal como está el código que puse funciona a la perfección me muestra el Ítem y el id, sin inconvenientes, el código está bien... Pero lo que trato de hacer es esto, el JCombobox muestra una lista de Ítems por ejemplo: (Pedro, Juanito, Javier, Ricardo, Pepe) esos nombres los trae de un base de datos y hasta ahí todo bien... El asunto es que con el modelo actual del JCombobox no puedo hace esto: JCombobox.setSeleted("Juanito"); y lo que quiero es saber cómo hacer este proceso con el modelo actual ya que JCombobox.setSeleted("Juanito"); no sirve para la forma de trabajar actual. Todo esto es para que cuando taiga el dato desde la DB el JCombobox muestre seleccione automáticamente el dato que traje desde la consulta de la BD. Obviamente manteniendo los datos de la lista (Pedro, Juanito, Javier, Ricardo, Pepe).

Agradezco enormemente el tiempo y la buena onda, un gran saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gabriel

Seleccionar Item en Jcombobox Java (Netbeans)

Publicado por Gabriel (1 intervención) el 10/06/2015 21:07:59
Hola,
Parece que el problema está en el concepto del setSelectItem ya que no le tenes que pasar el nombre que está mostrando sino el item, osea un CmbObtener
No hay que confundir el label que se muestra con el objeto que recibe el combo box

Para que funcione el setSelectItem tenes que pasarle la misma instancia del CmbObtener que creaste, que como se lo pasas directamente al construirlo lo que puedes hacer es:
una ves cargado el como bos recorrer el mismo
identificar el CmbObtener que se quiere seleccionar
y llamar al setSelectItem con el CmbObtener obtenido
saludos

Otra opción el usar el setSelectedIndex con el indice según el combo box, mientras se carga dicho combobox te guardas el índice y después lo seleccionas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar Item en Jcombobox Java (Netbeans)

Publicado por Mauricio (6 intervenciones) el 10/06/2015 23:17:05
El Modelo de JComboBox que estas ocupando es correcto, nada más que los estas aplicando mal.
Ejemplo: MVC
1
2
3
4
5
6
7
8
9
//Clase entidad
public class CCItem
{
    private int id_Item;
    private String descripcion;
    private double precio;
    //sus respectivos get and set
     get... set
}


1
2
3
4
5
6
7
8
9
//Clase Modelo conexión
public class Conexion_BD
{
  private static String driver = "com.mysql.jdbc.Driver";
  private static String url = "jdbc:mysql://localhost:3306/dbLunagraf";
  public static String user = "root";
  public static String psw = "12345"
 //aqui todo lo demás
 }


// En el mismo paquete creamos la clase CDItem con la siguiente estructura.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package Modelo.Datos;
import Modelo.Entidad.CEItem;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class CDItem
{
   public List listaItem()
   {
       Connection conexion=null;
       try
       {
        conexion=Conexion_BD.obtenerConexion();
        String sql="Select * from t01_item";
        Statement st=conexion.createStatement();
        ResultSet rs=st.executeQuery(sql);
        List<CEItem> oitem = new ArrayList<>();
       while(rs.next())
            {
             //Aqui llamas a tu clase y almacenas los valores.
               CEItem oItem=new CEItem();
               oItem.setId_Item(rs.getInt("idItem"));
               oItem.setDescripcion(rs.getString("descripcion"));
               oItem.setPrecio(rs.getDouble("precio"));
               oListItem.add(oItem);
            }
        return oListItem;
       }
       catch(Exception ex)
       {
           ex.printStackTrace();
           return null;
       }
       finally
       {
            try
            {
            conexion.close();
            }
            catch (SQLException ex)
            {
              ex.printStackTrace();
            }
       }
   }
}

//Creamos el controlador
1
2
3
4
5
6
7
8
9
10
11
12
package Controller;
import Modelo.Datos.CDItem;
import Modelo.Entidad.CEItem;
import java.util.List;
 
public class CCItem
{
    public static List listarItem()
    {
         return CDItem.listaItem();
    }
}


En teoria:
- Existe un método toString() es un método que es llamado por la mayoría de herramientas Swing Control (JTable,JComboBox,JList,etc)
para poder visualizar los items que estas contienen, es decir si un Swing Control contiene items pues a la hora de visualizarse
debe visualizar lo que el método toString() del Item devuelva ,
sea cual sea la naturaleza de nuestro item (int,String,double,char,Variable de Referencia,etc)
//Reestructuramos la clase CITEM con el metodo toString()

1
2
3
4
5
public String toString()
 
    {
        return this.descripcion;
    }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package Modelo.Entidad;
public class CEItem
{
    private int id_Item;
    private String descripcion;
    private double precio;
    public int getId_Item()
    {
        return id_Item;
    }
    public void setId_Item(int id_Item)
    {
        this.id_Item = id_Item;
    }
    public String getDescripcion()
    {
        return descripcion;
    }
    public void setDescripcion(String descripcion)
    {
        this.descripcion = descripcion;
    }
    public double getPrecio()
    {
        return precio;
    }
    public void setPrecio(double precio)
    {
        this.precio = precio;
    }

- Ahora a configurar nuestra vista para que cargue nuestro JComboBox con los objetos, para ello crearemos un método en el FramePrincipal
llamado "cargarItemsComboBox()" y su implementacion debe ser así:


1
2
3
4
5
6
7
8
9
10
11
12
private void cargarItemsComboBox()
    {
        List oListaItem = CCItem.listarItem();
        if(oListaItem!=null)
        {
            int tamanio=oListaItem.size();
            for(int i=0;i < tamanio, i++)
            {
                CbxItem.addItem(oListaItem.get(i));
            }
        }
    }


- Ejecutamos este método con el solo cargar del Frame, en mi caso lo disparare en el constructor del Frame seguido del método initComponents().

1
2
3
4
5
public FramePrincipal()
    {
        initComponents();
        cargarItemsComboBox();
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar