Seleccionar Item en Jcombobox Java (Netbeans)
Hola, Tengo un gran problema el cual no he podido resolver. Como está el código que puse funciona a la perfección me muestra el Ítem y el id, sin inconvenientes, el código funciona para mostrar y obtener el Ítem y el Id del JCombobox... 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") porque no hace nada. Entonces lo hago así “value1.setSelectedItem(“Juanito”)” y me selecciona el ítem pero me muestra siempre el primer id que corresponde al Ítem “Pedro”. Lo que quiero saber, es cómo hacer este proceso con el modelo actual, ya que las formas antes mostradas no sirven para la forma de trabajar actual. Todo esto es para que cuando taiga el dato desde la DB, el JCombobox muestre y seleccione automáticamente el dato y el id que traje desde la consulta de la BD. Obviamente manteniendo los datos de la lista (Pedro, Juanito, Javier, Ricardo, Pepe).
Aquí el código, de antemano muchas gracias!.
// 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 -----------------------------------------------------------------------------------
- Inicie sesión o regístrese para enviar comentarios
Re: seleccionar Item
Básicamente lo que necesitas es implementar el método
equals()
en la clase para el modelo. Ejemplo:import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Main {
static class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
@Override
public String toString() {
return name;
}
@Override
public int hashCode() {
int hash = 5;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Person other = (Person) obj;
if (this.id != other.id) {
return false;
}
return true;
}
}
public static void main(String[] args) {
DefaultComboBoxModel model = new DefaultComboBoxModel();
model.addElement(new Person(1, "Pedro"));
model.addElement(new Person(2, "Juanito"));
model.addElement(new Person(3, "Javier"));
model.addElement(new Person(4, "Ricardo"));
model.addElement(new Person(5, "Pepe"));
final JComboBox personsComboBox = new JComboBox(model);
final JComboBox idsComboBox = new JComboBox(new Integer[]{1, 2, 3, 4, 5});
personsComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Person person = (Person) personsComboBox.getSelectedItem();
idsComboBox.setSelectedItem(person.getId());
}
}
});
idsComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
int id = (Integer) idsComboBox.getSelectedItem();
personsComboBox.setSelectedItem(new Person(id, null));
}
}
});
JPanel panel = new JPanel(new FlowLayout());
panel.add(personsComboBox);
panel.add(idsComboBox);
JOptionPane.showMessageDialog(null, panel);
}
}
~~~
Gracias amigo mío, analizare
Gracias amigo mío, analizare el código y te aviso como me fue :D
Saludos.