Vou perder um tempinho para de dar uma dica.
Primeiro, tenha em mente que você vai trabalhar com um modelo, então vamos a classe modelo do JComboBox:
[code]import java.util.List;
import java.util.ArrayList;
import javax.swing.AbstractListModel;
import javax.swing.JComboBox;
import javax.swing.MutableComboBoxModel;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
public class ArrayListComboBoxModel extends AbstractListModel implements MutableComboBoxModel {
private ArrayList<ListDataListener> listeners = new ArrayList<ListDataListener>();
private Object selectedItem;
private List list;
int index;
JComboBox comboBox;
public ArrayListComboBoxModel(List list) {
super();
this.list = list == null ? new ArrayList() : new ArrayList(list);
}
public ArrayListComboBoxModel(List list, JComboBox comboBox) {
super();
this.list = list == null ? new ArrayList() : new ArrayList(list);
this.comboBox = comboBox;
}
public void addElement(Object element) {
list.add(element);
fireChangeNotification();
}
@Override
public void addListDataListener(ListDataListener l) {
synchronized (listeners) {
listeners.add(l);
}
}
public void fireChangeNotification() {
synchronized (listeners) {
ListDataEvent e = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, getSize());
for (ListDataListener listener : listeners) {
listener.contentsChanged(e);
}
}
}
@Override
public void removeListDataListener(ListDataListener l) {
synchronized (listeners) {
listeners.remove(l);
}
}
// ListModel
public int getSize() {
// Return the size of the ArrayList
return list.size();
}
public ArrayList<Object> getAllItems() {
return (ArrayList<Object>) this.list;
}
public Object getElementAt(int i) {
// Return the element at the specified position
return list.size() > 0 ? list.get(i) : null;
}
// ComboBoxModel
public Object getSelectedItem() {
return selectedItem;
}
public int getItemIndex(Object item) {
index = list.indexOf(item);
return index;
}
public void setSelectedItemLista(Object item) {
this.selectedItem = item;
index = list.indexOf(item);
if (comboBox != null) {
comboBox.setSelectedIndex(index);
comboBox.repaint();
}
this.fireChangeNotification();
}
public void setSelectedItem(Object item) {
this.selectedItem = item;
index = list.indexOf(item);
this.fireChangeNotification();
}
public int getSelectedIndex() {
//int index = list.indexOf(this.getSelectedItem());
return index;
}
public void insertElementAt(Object element, int index) {
// Insert the element at the specified position
list.add(index, element);
// Added in middle, notify ListDataListener objects
fireChangeNotification();
}
public void removeElement(Object element) {
// Find out position
index = list.indexOf(element);
if (index != -1) {
// Remove an element
list.remove(element);
// Removed from middle, notify ListDataListener objects
}
fireChangeNotification();
}
public void removeElementAt(int index) {
if (getSize() >= index) {
// Remove an element at the specified position
list.remove(index);
// Removed from index, notify ListDataListener objects
}
fireChangeNotification();
}
public void setElementAt(int index, Object object) {
list.set(index, object);
fireChangeNotification();
}
public int getSelectedIndex(Object object) {
index = list.indexOf(object);
return index;
}
// Para esse metodo funcionar eh necessario que no Object esteja implementado
// os metodos: hashcode, equal e compareTo
public int getIndexOf(Object object) {
int idx = -1;
if (this.list != null) {
idx = list.indexOf(object);
}
return idx;
}
}
[/code]
Segundo, você vai precisar de uma lista (pode ser o ArrayList) para adicionar ao modelo, então no deu DAO você precisa retornar uma lista de objetos (javabeans), esses javabeans precisa estar criados corretamente (com os métodos: toString, equals, hashcode e compareTo) para que você possa manipular seu JComboBox sem problemas, lembrando que você vai sempre mexer no modelo e nunca diretamente no JComboBox.
Supondo que fosse uma lista de clientes, então o objeto Cliente seria mais ou menos assim:
[code]import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
/**
*
-
@author Francisco
*/
public class Cliente implements Serializable, Comparable {
public Cliente() {
}
private int codigo = 0;
public static final String PROP_CODIGO = “codigo”;
private String nome;
public static final String PROP_NOME = “nome”;
private String telefone;
public static final String PROP_TELEFONE = “telefone”;
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
String oldTelefone = this.telefone;
this.telefone = telefone;
propertyChangeSupport.firePropertyChange(PROP_TELEFONE, oldTelefone, telefone);
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
String oldNome = this.nome;
this.nome = nome;
propertyChangeSupport.firePropertyChange(PROP_NOME, oldNome, nome);
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
int oldCodigo = this.codigo;
this.codigo = codigo;
propertyChangeSupport.firePropertyChange(PROP_CODIGO, oldCodigo, codigo);
}
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
@Override
public int hashCode() {
return (int) (this.getCodigo() * 333);
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Cliente other = (Cliente) obj;
if (this.getCodigo() != other.getCodigo()) {
return false;
}
return true;
}
public int compareTo(Cliente o) {
if (this.hashCode() < o.hashCode()) {
return -1;
} else if (this.hashCode() == o.hashCode()) {
return 0;
} else if (this.hashCode() > o.hashCode()) {
return 1;
} else {
return 1;
}
}
@Override
public String toString() {
return this.getNome();
}
}[/code]
Segue exemplo de uso:
[code]// Supondo que no seu DAO (ou de outro lugar) a lista venha montada assim
List listaClientes = new ArrayList();
Cliente item1 = new Cliente();
item1.setCodigo(1);
item1.setNome(“JOSÉ DA SILVA”);
item1.setTelefone(“11 3456-8765”);
listaClientes.add(item1);
Cliente item2 = new Cliente();
item2.setCodigo(2);
item2.setNome(“MARIA DA SILVA”);
item2.setTelefone(“11 3765-9432”);
listaClientes.add(item2);
// Agora você adiciona ao modelo do seu JComboBox
ArrayListComboBoxModel modeloComboBoxClientes = new ArrayListComboBoxModel(listaClientes);
comboClientes.setModel(modeloComboBoxClientes);
// Para que seu combo inicia mostrando a primeira posicao
comboClientes.getModel().setSelectedItem(comboClientes.getModel().getElementAt(0));
// Para que em determinado momento voce precise selecionar um determinado item na lista (numa consulta por exemplo)
Cliente itemConsultado = new Cliente(); // aqui no exemplo na tem nada no objeto
comboClientes.setSelectedItem(itemConsultado);
// Para pegar o objeto selecionado no momento
Cliente clienteSelecionado = (Cliente) comboClientes.getSelectedItem();
// Para remover todos os itens do JComboBox basta passar uma lista vazia
modeloComboBoxClientes = new ArrayListComboBoxModel(new ArrayList());
comboClientes.setModel(modeloComboBoxClientes);[/code]Espero que tenha entendido e que possa te ajudar, só lembrando que trabalhar como modelos é bem mais “elegante” (JComboBox, JTable, JList, etc…)