jueves, 17 de julio de 2008

un value para jComboBox


con este emplo de jComboBox vamos a mostrar el nombre y cuando seleccionemos
un items de dicho jcomboBox vamos a traer un dato (para el ejemplo el id ), el
secreto de esta operacion es que el jcomboBox almacena object y es por eso que
le añadimos objetos de tipo persona al jComboBox , este objeto le sobre escribimos
el metodo toString que por defecto lo trae, porque es un metodo de la clase object
y todo objeto hereda de el , bueno en el metodo toString retornamos el
nombre , que seria lo que queremos mostrar en el JComboBox y generamos un
get del id para que cuando seleccionemos un objecto del jComboBox nos traiga el
get del objeto seleccionado.

El siguiente y bueno la mayoria de los codigos estan hechos con el IDE
Netbeans

Primero la clase persona:

public class persona {

private String nombre;
private String id ;

/** Creates a new instance of persona */
public persona(String nombre , String id ) {

this.nombre=nombre;
this.id=id;
}

public String getID()
{
return id ;
}


public String toString()
{
return nombre ;
}

}

ahora el codigo de la ventana
//////////////////////////////////////////////////////////////////

public class ventana extends javax.swing.JFrame {

DefaultComboBoxModel value;

public ventana() {
initComponents();
setBounds(0,0,360,200); //porque deje el diseño null layout
setLocationRelativeTo(null); // centrar la ventana en la pantalla


value =new DefaultComboBoxModel();
jComboBox1.setModel(value);

value.addElement(new persona("Seleccione"," "));
value.addElement(new persona("esteban","22222"));
value.addElement(new persona("jorge","1233-3"));
value.addElement(new persona("esteban","22222"));
value.addElement(new persona("daniel","2222"));
}


private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {

persona cliente = (persona) jComboBox1.getSelectedItem() ;
String id = cliente.getID() ;
jLabel3.setText(id);

}

// main de jFrom pero se puede eliminar porque desde otro main

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ventana().setVisible(true);
}
});

}

7 comentarios:

Anónimo dijo...

Excelente...!!!, gracias muy buena ayuda.., sólo falto talvez para los que esten aún más novatos que yo jajaja.. la importación de la clase...

Saludos

Anónimo dijo...

Hola me preguntaba si me puedes ayudar yo implementé tu codigó y funciona perferfectamente, pero como hago para seleccionar un item del combobox si yo le paso el id.

por ejemplo:

jcombobox.setselecteditem(id);

Oscar Velasco Estrada dijo...

Maravilloso, gran aporte, hace practico y fácil obtener los datos de la consulta, ojala puedas poner mas trucos como este, tienes muy buena lógica

Unknown dijo...

hola esque yo ya tengo mostrado el combo de otra manera y solo quiero guardar el dato pero ps no se puede xq el dato que me pide para guardad es un entero y ps yo estoy tomando un string como le hago para cambiarlo este es mi codigo para mostrar en el combo, es que tengo mas elementos en mi frame espero y me puedas ayudar
final JComboBox tipotitular = new JComboBox();

try{
st=(Statement)miConexion.createStatement();

rs=st.executeQuery("select nombre from tipo_titular");
while(rs.next()){
tipotitular.addItem(rs.getString("Nombre"));

}
}catch(SQLException e){

}
tipotitular.setBounds(182, 439, 169, 20);
contentPane.add(tipotitular);

Unknown dijo...

Gracias men :D

Anónimo dijo...

Qué crack... simple y con posibilidades ilimitadas. Muchas gracias.

Anónimo dijo...

Muchas gracias por el aporte me sirvió mucho, saludos :D