ola pessoal, seguinte!
eu abro um frame que possui um jComboBox, e ao inicializar esse frame o jComboBox é preenchido com os dados de uma tabela do banco de dados!
porem, no combox aparece a referencia, ex: CT,CR,CD entre outras…
porem tenho que ter essa informação e tb o CODIGO daquela referencia no mesmo combox!
ouvi dizer que tem como, pois o combobox guarda o q ele mostra pro usuario e o valor daquela informação!
em outra linsguagens é possivel, porem em java nao sei como fazer isso
alguem sabe me ajudar?
private void atualizarCombo() {
comboLista.removeAllItems(); //remove todos os itens e re-adiciona um por um
for(ObjVindoDoBanco item:lista){
comboLista.addItem(item.getId()+item.getNome());//aqui você mostra uma String dentro da combo que pode ser do jeito que você quiser
}
}
Esse método deve sempre ser chamado ao atualizar os dados, para remover um item remova-o da lista em seguida chame esse método
E
entanglement
O segredo é criar uma classe bem simples, só para visualizar as coisas no combo, e fazer essa classe implementar o método toString. Exemplo:
packageguj;importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.DefaultComboBoxModel;importjavax.swing.JComboBox;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.SwingUtilities;publicclassExemploJComboBoxextendsJFrame{/** Esta é uma classe bem simples, que você usa só para preencher o combo. */staticclassFeriado{publicFeriado(intdia,Stringmes,StringnomeFeriado){this.dia=dia;this.mes=mes;this.nomeFeriado=nomeFeriado;}publicintgetDia(){returndia;}publicStringgetMes(){returnmes;}publicStringgetNomeFeriado(){returnnomeFeriado;}publicvoidsetDia(intdia){this.dia=dia;}publicvoidsetMes(Stringmes){this.mes=mes;}publicvoidsetNomeFeriado(StringnomeFeriado){this.nomeFeriado=nomeFeriado;}/** Este método é o que você usa para mostrar um feriado no combo */@OverridepublicStringtoString(){returnnomeFeriado;}privateStringnomeFeriado;privateintdia;privateStringmes;}publicExemploJComboBox(){super();initialize();}/** * Este é o método ao qual você deve prestar atenção. Entenda-o direitinho! */privateJComboBoxgetCboFeriados(){if(cboFeriados==null){cboFeriados=newJComboBox();DefaultComboBoxModeldcbm=(DefaultComboBoxModel)cboFeriados.getModel();dcbm.addElement(newFeriado(7,"setembro","Independência"));dcbm.addElement(newFeriado(15,"outubro","Proclamação da República"));dcbm.addElement(newFeriado(25,"dezembro","Natal"));cboFeriados.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){FeriadoferiadoSelecionado=(Feriado)cboFeriados.getSelectedItem();if(feriadoSelecionado==null)return;lblFeriadoEscolhido.setText("O feriado escolhido é "+feriadoSelecionado.getNomeFeriado()+", que ocorre em "+feriadoSelecionado.getDia()+" de "+feriadoSelecionado.getMes());}});}returncboFeriados;}privateJPanelgetJContentPane(){if(jContentPane==null){lblFeriadoEscolhido=newJLabel();lblFeriadoEscolhido.setText("");jContentPane=newJPanel();jContentPane.setLayout(newBorderLayout());jContentPane.add(getCboFeriados(),BorderLayout.NORTH);jContentPane.add(lblFeriadoEscolhido,BorderLayout.SOUTH);}returnjContentPane;}privatevoidinitialize(){this.setSize(500,100);this.setContentPane(getJContentPane());this.setTitle("Exemplo JComboBox");}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){ExemploJComboBoxthisClass=newExemploJComboBox();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJComboBoxcboFeriados=null;privateJLabellblFeriadoEscolhido=null;}
E
entanglement
Note que você adiciona Objetos (neste caso instâncias da classe Feriado) no combo, não Strings.
A
augusto340
Magnifica a explicação entanglement!!! porem resolvi de um jeito bem simples, ve o que voce acha, posso fazer isso?
preencho o jComboBox com um campo de uma tabela do banco de dados atraves de um ResultSet
isso era o q eu tinha, porem preciso deixar guardado a informação MODALIDADE que vou poder buscar no jComboBox e tambem o COD daquela modalidade.
Entao criei um arraylist para guardar os COD. segue o codigo abaixo:
List<Integer>listaCodModalidade=newArrayList<>();publicvoidatualizarComboBox(){
jComboBox.removeAllItems();jComboBox.addItem("selecione uma Modalidade");while(resultSet.next()){
jComboBox.addItem(resultSet.getString("modalidade"));listaCodModalidade.add(resultSet.getInt("cod"));}
}
assim posso buscar o COD da MODALIDADE selecionada atraves do metodo getSelectedIndex().
a index do combobox + 1 é igual ao indice do elemento da lista que esta o respectivo COD daquela modalidade…
OBS: pode ter alguns erros no codigo, pois nao testei, tenho feito no trabalho e aqui fiz de cabeça pelo q lembrava…