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);
}
});

}