Salve galera…
Seguinte, eu tenho um JComboBox onde faço um auto-complete baseado num Collections List retornado do meu banco de dados…Ja consigo fazer isso e estou usando a biblioteca SwingX q ajuda bastante.
Agora quero saber como ao invés de pegar o nome do cliente pegar o código, pq no JComboBox eu exibo o nome e não o código.
Andei vendo e muitas pessoas dizem pra usar HashMap, mas naum encontrei nada de como fazer. Minha tabela de Clientes vc vaum ver q ta definida como Ter01, vai saber pq definiram esse nome, ja vou adiantando q naum fui eu…kk !
aqui como estou fazendo.
// model
public class AbstractComboBoxModel extends AbstractListModel implements ComboBoxModel{
private Object selectedItem;
private List<Ter01> list;
private HashMap map = new HashMap();
public AbstractComboBoxModel(){
list = new ArrayList<Ter01>();
}
public AbstractComboBoxModel(List<Ter01> lista){
this();
list.addAll(lista);
}
@Override
public int getSize() {
return list.size();
}
@Override
public Object getElementAt(int index) {
Ter01 t = list.get(index);
//map.put(t.getCodigo(), t.getNome());
//return map.values();
return t.getNome();
}
@Override
public void setSelectedItem(Object anItem) {
selectedItem = anItem;
}
@Override
public Object getSelectedItem() {
return selectedItem;
}
}
//aqui como estou usando no meu JFrame com a lib SwingX
construtor(){
AutoCompleteDecorator.decorate(jComboBox1); //decorate de swingx
meuCombo();
}
public void meuCombo(){
jComboBox1.setMaximumRowCount(10);
List<Ter01> lista = new Ter01DAO().retornaListaTer01(); //retorna a lista com os dados
AbstractComboBoxModel model = new AbstractComboBoxModel(lista);//adiciono a lista ao meu model
jComboBox1.setModel(model);//mudo o model do jcombo para o meu implementado
}
Como faco pra pegar o codigo do cliente e naum o nome…
Blz galera…Ja que ninguém respondeu, consegui fazer o que preciso. 100% funcional, vou deixar aqui como fiz. Vai q alguem precisa.
Primeira coisa é baixar o SwingX, baixei aqui: http://www.java2s.com/Code/Jar/s/swingx.htm
agora a implementacao
// meu Bean
public class Funcoes {
private Long idFuncao;
private String funcao;
public String getFuncao() {
return funcao;
}
public void setFuncao(String funcao) {
this.funcao = funcao;
}
public Long getIdFuncao() {
return idFuncao;
}
public void setIdFuncao(Long idFuncao) {
this.idFuncao = idFuncao;
}
public String toString(){
return funcao;
}
}
//meu DAO
public List<Funcoes> retornaFuncao(){
List<Funcoes> lista = new ArrayList<Funcoes>();
PreparedStatement stm = null;
ResultSet rs = null;
try{
stm = this.con.prepareStatement("SELECT * FROM funcoes");
rs = stm.executeQuery();
while(rs.next()){
Funcoes f = new Funcoes();
f.setIdFuncao(rs.getLong("id_funcao"));
f.setFuncao(rs.getString("funcao"));
lista.add(f);
}
}catch (SQLException e){
JOptionPane.showMessageDialog(null, "Erro tentando consultar função", "Erro", JOptionPane.ERROR_MESSAGE);
}finally{
try {
rs.close();
stm.close();
} catch (SQLException ex) {
Logger.getLogger(FuncoesDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
return lista;
}
//meu ComboBoxModel
public class FuncoesComboModel extends AbstractListModel implements ComboBoxModel{
private List<Funcoes> listaFuncoes;
private Object selectedItem;
public FuncoesComboModel(){
listaFuncoes = new ArrayList<Funcoes>();
}
public FuncoesComboModel(List<Funcoes> lista){
this();
listaFuncoes.addAll(lista);
}
@Override
public int getSize() {
return listaFuncoes.size();
}
@Override
public Object getElementAt(int index) {
return listaFuncoes.get(index);
}
@Override
public void setSelectedItem(Object anItem) {
selectedItem = anItem;
}
@Override
public Object getSelectedItem() {
return selectedItem;
}
}
//aqui como tudo funciona no JFrame
public class CadastroDeFuncoes extends JFrame{
private JComboBox comboPesquisa;
public CadastroDeFuncoes(){
comboPesquisa = new JComboBox();
meuCombo();
}
public void meuCombo(){
AutoCompleteDecorator.decorate(comboPesquisa); //aqui o SwingX para autocomplete
comboPesquisa.setMaximumRowCount(10);
List<Funcoes> lista = new FuncoesDAO().retornaFuncao();
FuncoesComboModel fcm = new FuncoesComboModel(lista);
comboPesquisa.setModel(fcm);
comboPesquisa.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
if(comboPesquisa.getSelectedIndex() != -1){
Funcoes f = (Funcoes)comboPesquisa.getSelectedItem();
Long id = f.getIdFuncao();
System.out.println(id); //aqui exibo o id
}
}
});
}
}
Pronto galera…100% funcional ;-).
vlw aew.