estou iniciando em java, tenho alguns costumes diferentes pois sou programador PHP tem mais de 5 anos…ai fica um pouco dificil…porém vamos à minha dúvida:
eu criei um JComboBox e enviei o valor para ele do BD, porém como vou relacionar o Valor selecionado com o Valor do ID no registro do BD?
Tipo assim:
mandei mostrar nele o registro:
ID - NOME
1 - casa
3 - apto
5 - sitio
8 - fazenda
porém eu mandei mostrar só o nome, como que faço para inserir no BD o id?? tem alguma coisa no JComboBox q relaciona o ID? pois não achei nada parecido na net!!
como vc esta alimentando seu JComboBox?
vc esta usando alguma coisa do tipo List?
P
pozzo
O legal é você trabalhar com objetos dentro do DataModel, de forma que o seu objeto contenha o id, nome e qualquer outra informação que você precise. Por padrão o DefaultCellRenderer imprime o toString do objetos, mas você pode implementar o seu custom CellRenderer, e alterar a forma de exibição no componente. Entendeu?
onde o MySQl. ConsultaSQL eh uma classe minha de conexão
leonardoMachado
A forma com que trabalho com JComboBox, JTable, para vincular elementos é a partir de um List.
Onde o elemento que esta selecionado corresponde ao indice da lista.
Mas deve ter outras formas de se fazer, como uso o Hibernate fica um pouco mais facil de fazer.
Abraços
M
marcobiscaro2112
Você pode usar um HashMap, que é uma espécie de lista ordenada com índice: cada elemento da esquerda tem um correspondente na direita. Dê uma olhada num possível trecho:
Se quiser mesmo usar essa solução, aí precisa entender um pouco melhor essa técnica. Tem que olhar a documentação da API e se precisar, chama a gente aqui no fórum.
M
marcobiscaro2112
Rode o programa acima e veja se é esse o resultado esperado.
fabiozoroastro
Bom dia ericmaicon.
Eu utilizo uma classe auxiliar para popular os meus combos. Desta forma eu tenho chave e valor para o meu JComboBox.
Veja a implementação da classe:
packagemeupacote;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.MissingResourceException;importorg.apache.commons.beanutils.BeanUtils;importbr.com.cit.caf.exception.SystemException;importcom.vale.mi.planejamento.aps.framework.commons.bundle.APSInter;importcom.vale.mi.planejamento.aps.framework.commons.util.ReflectUtil;/** * Classe que representa um item de um ComboBox.<br> Foi criada para * agrupar um objeto como valor, e uma string como descrição. * * * @param <T> */publicclassComboBoxItem<T>implementsComparable<ComboBoxItem>{privateTvalue;privateStringtext;/** * ESTE É APENAS UM MÉTODO AUXILIAR * Retorna uma lista de ComboBox a partir da lista informada com valores do Bundle. * * @param list * @param fieldKey * field que será a have do combo * @param fieldValue * field que será o valor do combo * @param blankFirst * informe true se desejar o primeiro item em branco. * @return */@SuppressWarnings("unchecked")publicstaticList<ComboBoxItem>getListComboBoxItemBundle(List<?>list,finalbooleanblankFirst,finalString...fields){List<ComboBoxItem>result=newArrayList<ComboBoxItem>();if(list!=null&&!list.isEmpty()){if(blankFirst){result.add(newComboBoxItem(null,""));}// Percorre todos os registros e monta o comboBoxItem.for(Objecto:list){try{StringBuffertext=newStringBuffer();if(fields!=null&&fields.length>0){for(inti=0;i<fields.length;i++){text.append(APSInter.getInstance().getBundle().getString(BeanUtils.getProperty(o,fields[i])));// Adiciona um traço se houver mais fieldsif((i+1)<fields.length){text.append(" - ");}}result.add(newComboBoxItem(o,text.toString()));}}catch(Exceptione){thrownewSystemException(e);}}}//Collections.sort( result );returnresult;}/** * ESTE É APENAS UM MÉTODO AUXILIAR * Retorna uma lista de ComboBox a partir da lista informada. * * @param list * @param fieldKey * field que será a have do combo * @param fieldValue * field que será o valor do combo * @param blankFirst * informe true se desejar o primeiro item em branco. * @return */@SuppressWarnings("unchecked")publicstaticList<ComboBoxItem>getListComboBoxItem(List<?>list,finalbooleanblankFirst,finalString...fields){List<ComboBoxItem>result=newArrayList<ComboBoxItem>();if(list!=null&&!list.isEmpty()){if(blankFirst){result.add(newComboBoxItem(null,""));}// Percorre todos os registros e monta o comboBoxItem.for(Objecto:list){try{StringBuffertext=newStringBuffer();if(fields!=null&&fields.length>0){for(inti=0;i<fields.length;i++){text.append(BeanUtils.getProperty(o,fields[i]));// Adiciona um traço se houver mais fieldsif((i+1)<fields.length){text.append(" - ");}}result.add(newComboBoxItem(o,text.toString()));}}catch(Exceptione){thrownewSystemException(e);}}}returnresult;}/** * ESTE É APENAS UM MÉTODO AUXILIAR * Retorna uma lista de ComboBox a partir do enum informada. * @param enumType * @param blankFirst * @return */@SuppressWarnings("unchecked")publicstaticList<ComboBoxItem>getListComboBoxItem(Class<?extendsEnum>enumType,finalbooleanblankFirst){List<ComboBoxItem>result=newArrayList<ComboBoxItem>();if(blankFirst){result.add(newComboBoxItem(null,""));}for(Objectitem:enumType.getEnumConstants()){StringlabelKey=ReflectUtil.getInstance().getFieldValue(item,"label");Stringlabel=null;try{label=APSInter.getInstance().getBundle().getString(labelKey);}catch(MissingResourceExceptione){label=labelKey;}result.add(newComboBoxItem(item,label));}returnresult;}publicComboBoxItem(Tvalue,Stringtext){this.value=value;this.text=text;}publicComboBoxItem(Tvalue){super();this.value=value;}publicTgetValue(){returnvalue;}publicvoidsetValue(Tvalue){this.value=value;}publicStringgetText(){returntext;}publicvoidsetText(Stringtext){this.text=text;}@OverridepublicStringtoString(){if(text!=null)returntext;elseif(value!=null)returnvalue.toString();elsereturnnull;}@Overridepublicbooleanequals(Objectobj){booleanresult=false;if(text!=null&&obj!=null&&obj.toString()!=null){result=this.text.trim().equals(obj.toString().trim());}returnresult;}publicintcompareTo(ComboBoxItemo){returntoString().compareTo(o.toString());}}
opa opa…pera aí!! hehehe!! eu até assustei aqui…muitas respostas…muuuito obrigado, fazia tempo q não via uma comunidade assim!!
vou estudar primeiro sobre o QUE é hash map, hehehe, depois vou estudar as outras classes para ver se consigo implementar aqui…ai se eu tiver dúvida volto aqui!
realmente muito obrigado e Parabéns!!
tiaguinhooo
cria um modelo pro seu combo q nem jtable
tenta assim
/** * * @author Tiago */publicclasscCliente{privateStringvalue;privateintkey;publiccCliente(intkey,Stringvalue){this.key=key;this.value=value;}@OverridepublicStringtoString(){returnvalue;}publicintgetKey(){returnkey;}}//CLASSE DO COMBO VEJA NELE EM O ID E O NOME DO FULANOJESEBELTO !=)
//vetor pra por os dadosVectorvCliente=newVector();//for 2.alguma coisa ou for do seu rs e talfor(Clientec:ClienteList){//objeto da sua classe acima dentro vc poe o id e o nome cClientecmb=newcCliente(c.getId(),c.getRazaoCli());vCliente.add(cmb);//aki vc add o cmb (objeto) dentro do vetor ! XD umdentro do outro usuaushuh ! brincadera}// esse e o seu modelo de combo la em cima da sua classe declara isso aki veja --->private ComboBoxModel modelocCliente ;modelocCliente=newDefaultComboBoxModel(vCliente);//AKi esse nome sem norma aki e o nome do combo "comboaltcli" se seta o modelo delecomboaltcli.setModel(modelocCliente);
ai agora vc pega as info veja desse jeito
// aki ele ia pega o nome vc disse q tras o nome e qr o id Objectobj3=comboaltcli.getSelectedItem();intvalor=0;//passa pra int pega o valor da um cast pra classe cCliente pega a keyvalor=Integer.parseInt(String.valueOf(((cCliente)obj3).getKey()));out.printvalor...blabla
acho q isso ajuda
peguei o mesmo exemplo no forum so q eu nao coloquei o link akipq eu nao achei