Foros del Web » Programación para mayores de 30 ;) » Java »

seleccionar item de jcombobox

Estas en el tema de seleccionar item de jcombobox en el foro de Java en Foros del Web. buen dia , tengo un combobox que lleno con los datos que obtengo de una consulta de mysql que paso a travez de una clase ...
  #1 (permalink)  
Antiguo 18/10/2012, 12:56
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Pregunta seleccionar item de jcombobox

buen dia , tengo un combobox que lleno con los datos que obtengo de una consulta de mysql que paso a travez de una clase el codigo de mi clase es el siguiente
Código:
public class ClasificacionesArt {

   private int id; 
   private String Clasificacion; 
   
public ClasificacionesArt(int id,String Clasificacion){
this.id = id;
this.Clasificacion = Clasificacion;
}
     
public int getId(){
return id;
}   

public void setId(int id){
this.id = id;
}


public String getClasificacion(){
return Clasificacion;
}

public void setClasificacion(String Clasificacion){
this.Clasificacion = Clasificacion;
}
@Override
public String toString(){
return Clasificacion;
}

}
para llenar el jcombobox hago lo siguiente

Código:
public void comboClasificaciones(){
ConexionMySQL ConexionMysql = new ConexionMySQL();
Connection cn = ConexionMysql.Conectar();
try{
String Clasificacion;
int id;
Statement stComboClasificaciones = cn.createStatement();
ResultSet rsComboClasificaciones = stComboClasificaciones.executeQuery("Select * from CLASIFICACIONES order by CLASIFICACION");
while(rsComboClasificaciones.next()){
id = Integer.parseInt(rsComboClasificaciones.getString("ID"));
Clasificacion = rsComboClasificaciones.getString("CLASIFICACION");
ClasificacionesArt Clasif = new ClasificacionesArt(id,Clasificacion);
cboClasificaciones.addItem(Clasif);
}    
    
}catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}

}
lo que necesito es que despues de una consulta que me regresa un string llamado ClasificacionArt se seleccione el item que tenga el mismo contenido de la string

he intentado con
Código:
if(ClasificacionArt != null){
cboClasificaciones.setSelectedItem(ClasificacionArt);  
}
pero no me selecciona nada del combo , si me pudieran orientar sobre como lograr que se seleccione el elemento estaria muy agradecido , de antemano se agradece la atencion prestada a su servidor
  #2 (permalink)  
Antiguo 18/10/2012, 20:00
 
Fecha de Ingreso: febrero-2012
Mensajes: 136
Antigüedad: 12 años, 2 meses
Puntos: 8
Respuesta: seleccionar item de jcombobox

Tio tienes que usuar DefaultcomboModel si no me equivoco para llenar un combox ..
hay bastantes ejemplos en internet y en Api como usar este componete Swing
  #3 (permalink)  
Antiguo 19/10/2012, 19:02
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: seleccionar item de jcombobox

gracias advkael ya lo solucione , aunque me hayan bajado un punto sin motivo a mi parecer pero posteo la respuesta a mi problema para si alguien tiene el msmo problema pueda solucionarlo

primero creo una clase que son los objetos que ire agregando al modelo del jcombobox

Código:
package posdevelop;

/**
 *
 * @author Santiago
 */
public class ClasificacionesArt {

   private int id; 
   private String Clasificacion; 
   
public ClasificacionesArt(int id,String Clasificacion){
this.id = id;
this.Clasificacion = Clasificacion;
}
     
public int getId(){
return id;
}   

public void setId(int id){
this.id = id;
}


public String getClasificacion(){
return Clasificacion;
}

public void setClasificacion(String Clasificacion){
this.Clasificacion = Clasificacion;
}
@Override
public String toString(){
return Clasificacion;
}

}
despues creo otra clase que es mi modelo con las siguientes propiedades y metodos la cual crea los objetos a partir de un resultset que le envio

Código:
package posdevelop;

import java.sql.*;
import java.util.Vector;
import javax.swing.ComboBoxModel;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;

/**
 *
 * @author Santiago
 */
public class ResultSetComboModel implements ComboBoxModel{
    private Vector <ClasificacionesArt> data = new Vector <ClasificacionesArt>();
    private Vector <ListDataListener> list = new Vector <ListDataListener>();
    private ClasificacionesArt selectedItem;
    
    public ResultSetComboModel(ResultSet r,String id,String Clasificacion)throws SQLException{
    r.beforeFirst();
    while(r.next()){
      data.add(new ClasificacionesArt(r.getInt(id),r.getString(Clasificacion)));
                    }
    }
    public ClasificacionesArt searchSelectedItem(Integer i){
    for (ClasificacionesArt o : data){
      if (i.equals(o.getId())){
         return o;
                                }
    }
      
        return null;
    }
    
    public ClasificacionesArt searchSelectedItem(String c){
    for (ClasificacionesArt o : data){
      if (c.equals(o.getClasificacion())){
         return o;
                                }
    }
      
        return null;
    }
    
    public void setSelectedItem(Object anItem){
    selectedItem = anItem instanceof ClasificacionesArt ? (ClasificacionesArt) anItem : null;
    for(ListDataListener l : list){
                            l.contentsChanged(new ListDataEvent(this, javax.swing.event.ListDataEvent.CONTENTS_CHANGED,0,0));
                                   }
    
    }
    
    public Object getSelectedItem(){
      return selectedItem;
    }
    
    public int getSize(){
    return data.size();
    }
    
    public Object getElementAt (int index){
    return data.get(index);
    }
    
  public void addListDataListener(ListDataListener l){
    list.add(l);
}
    
    
   public void removeListDataListener(ListDataListener l){
   list.remove(l);
  } 
    
    public Integer getSelectedId(){
     return selectedItem == null ? null : selectedItem.getId();
    }
    
    public String getSelectedClasificacion(){
     return selectedItem == null ? null : selectedItem.getClasificacion();
    }
}
despues creo mi consulta y mando el resulset a mi clase de modelo de jcombobox en una instancia y con dos parametros que son las label de las columnas de mi resultset

Código:
public void comboClasificaciones(){
ConexionMySQL ConexionMysql = new ConexionMySQL();
Connection cn = ConexionMysql.Conectar();
try{

Statement stComboClasificaciones = cn.createStatement();
ResultSet rsComboClasificaciones = stComboClasificaciones.executeQuery("Select * from CLASIFICACIONES order by CLASIFICACION");

cboClasificaciones.setModel(new ResultSetComboModel(rsComboClasificaciones,"ID","CLASIFICACION"));
cn.close();    
    
}catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}

}
y para poder setear un objeto en el combobox lo mando llamar y setear de la siguiente manera en donde recibe un string que compara para obtener un return del objeto coincidente mediante la rutina searchSelectedItem de mi clase de modelo de jcombobox

Código:
if(ClasificacionArt != null){
cboClasificaciones.setSelectedItem(((ResultSetComboModel)cboClasificaciones.getModel()).searchSelectedItem(ClasificacionArt));  
}
asi pues queda provado , testeado y solucionado espero sea util a alguien mas salu2

Etiquetas: jcombobox, setselecteditem
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:16.