Pessoal, achei legal postar esse codigo pra ajudar uma galera.
É um ComboBoxModel que pode ser criado a partir de um ArrayList, um ResultSet ou um SQL enviando com a conexao.
Fiquem a vonts:
/*
* Criado por Bruno R. Lima em 03/02/2005
*/
package combobox;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
/**
* Model para ComboBox que pode ser carregado a partir de um SQL ou
* ResultSet ou memso o array.
*
* @author Bruno Rios Lima
*/
public class DBComboModel extends AbstractListModel implements ComboBoxModel{
private ArrayList lista;
public int indexSelected;
/**
* Construtor para a classe ComboModel.java.
*
* @param lista lista com os valores carregados.
*/
public DBComboModel(ArrayList lista){
this.lista = lista;
}
/**
* Construtor para a classe ComboModel.java.
*/
public DBComboModel(){
}
/**
* Construtor para a classe ComboModel.java.
*
* @param sql SQL que será executado
* @param column coluna de qual o model vai retirar os valores da linha
* @param conn a conexao que será executado o SQL
* @throws SQLException
*/
public DBComboModel(String sql, int column, Connection conn) throws SQLException{
loadDataFromSQL(sql, column, conn);
}
/**
* Adiciona um elemneto
* @param anObject
*/
public void addElement(Object anObject){
lista.add(anObject);
}
/**
* Retorna o elemento no indice informado
*/
public Object getElementAt(int index) {
return lista.get(index);
}
/**
* Retorna o indice do elemtno informado
* @param anObject
* @return
*/
public int getIndexOf(Object anObject){
int index = 0;
for(int i=0;i<=lista.size()-1;i++){
if(((Estado)lista.get(i)).getId() == ((Estado)anObject).getId()){
index = i;
break;
}
}
return index;
}
/**
* Seta como item selecionado
*/
public void setSelectedItem(Object anObject){
for(int i=0;i<=lista.size()-1;i++){
if(((Estado)lista.get(i)).getId() == ((Estado)anObject).getId()){
indexSelected = i;
break;
}
}
}
/**
* Retorna o item selecionado
*/
public Object getSelectedItem() {
return lista.get(indexSelected);
}
/**
* Retorna o tamanho do modelo ( total de itens )
*/
public int getSize() {
return lista.size();
}
/**
* insere im novo elemtno na posicao infomada
* @param anObject
* @param index
*/
public void insertElementAt(Object anObject, int index){
lista.add(index,anObject);
}
/**
* Remove todos os componetes
*
*/
public void removeAllElements(){
lista = new ArrayList();
}
/**
* Remove um dado elemento
* @param anObject
*/
public void removeElement(Object anObject){
for(int i=0;i<=lista.size()-1;i++){
if(((Estado)lista.get(i)).getId() == ((Estado)anObject).getId()){
lista.remove(i);
break;
}
}
}
/**
* Remove o elemento no indice informado
* @param index
*/
public void removeElementAt(int index){
lista.remove(index);
}
/**
* Carrega o modelo com base no resultset informado e na coluna desejada
* Apenas carrega mais valores na combo.
* @param rs
* @param column
* @throws SQLException
*/
public void loadData(ResultSet rs, int column) throws SQLException{
// looping para alimentar os dados
ResultSetMetaData m = rs.getMetaData();
// Carrega os dados
while(rs.next()){
addElement(rs.getObject(column));
}
}
/**
* Executa o SQL passando na conexao enviada, retirando o valor da coluna passada.
* Apenas carrega mais valores na combo.
* @param sql
* @param column
* @param conn
* @throws SQLException
*/
public void loadDataFromSQL(String sql, int column, Connection conn) throws SQLException{
Statement cstmt = conn.createStatement();
ResultSet rset = cstmt.executeQuery(sql);
loadData(rset, column);
}
}