You are on page 1of 3

Un objeto donde se guardan los registros de la base de datos.

Código:
/*
* ResultSetComboBoxModelObject.java
*/

package com.xxxx.xxxx.Library;

/**
* ResultSet ComboBoxModel Object
* @author Yo
* @version 1.0
*/
public class ResultSetComboBoxModelObject {

private Integer codigo;


private String descri;

public ResultSetComboBoxModelObject(Integer codigo, String descri)


{
this.codigo = codigo;
this.descri = descri;
}

@Override
public String toString() {
return this.getDescri();
}

public Integer getCodigo() {


return codigo;
}

public void setCodigo(Integer codigo) {


this.codigo = codigo;
}

public String getDescri() {


return descri;
}

public void setDescri(String descri) {


this.descri = descri;
}
}

El modelo que se adjunta al ComboBox.

Código:
/*
* ResultSetComboBoxModel.java
*/

package com.xxxx.xxxx.Library;

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

/**
* ResultSet ComboBoxModel
* @author Yo
* @version 1.0
*/
public class ResultSetComboBoxModel implements ComboBoxModel {

private Vector<ResultSetComboBoxModelObject> data = new


Vector<ResultSetComboBoxModelObject>();
private Vector<ListDataListener> list = new
Vector<ListDataListener>();
private ResultSetComboBoxModelObject selectedItem;

public ResultSetComboBoxModel(ResultSet r, String codigo, String


descri) throws SQLException {
r.beforeFirst();
while (r.next()) {
data.add(new
ResultSetComboBoxModelObject(r.getInt(codigo), r.getString(descri)));
}
}

public ResultSetComboBoxModelObject searchSelectedItem(Integer i)


{
for (ResultSetComboBoxModelObject o : data) {
if (i.equals(o.getCodigo())) {
return o;
}
}
return null;
}

public ResultSetComboBoxModelObject searchSelectedItem(String s) {


for (ResultSetComboBoxModelObject o : data) {
if (s.equals(o.getDescri())) {
return o;
}
}
return null;
}

public void setSelectedItem(Object anItem) {


selectedItem = anItem instanceof
ResultSetComboBoxModelObject ? (ResultSetComboBoxModelObject) 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 getSelectedCodigo() {


return selectedItem == null ? null : selectedItem.getCodigo();
}

public String getSelectedDescri() {


return selectedItem == null ? null : selectedItem.getDescri();
}
}

Y la forma de usarlo ...

Código:
jComboBox1 = new com.xxxx.xxxx.Library.JComboBox();
jComboBox1.setModel(new
ResultSetComboBoxModel(MyResultSet.executeQuery(), "codtar",
"destar"));
// Aquí MyResultSet es un callable statement que regresa un ResultSet,
"codtar" y "destar" son
los nombres de los campos en la base de datos.

para obtener el código del item seleccionado ...

Código:
((ResultSetComboBoxModelObject)jComboBox1.getSelectedItem()).getCodigo
()
getSelectedItem puede ser nulo.

para seleccionar un item por el código (por ejemplo 100) ...

Código:
jComboBox1.setSelectedItem(((ResultSetComboBoxModel)jComboBox1.getMode
l()).searchSelectedItem(100));

para seleccionar ningún codigo ...

Código:
jComboBox1.setSelectedItem(null);

You might also like