Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/10/2012, 19:02
Avatar de fahs82
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