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?
qualquer coisa explico mais detalhadamente…
grato!
Que jeito você esta adicionando para mostrar na combo box? Você pega o objeto que contém todos os dados ou a String referenciando o nome do objeto?
Eu costumo fazer assim por exemplo:
//recebo a listagem do banco e guardo ela dentro de uma variavel do tipo List
List <ObjVindoDoBanco>lista = new ArrayList<ObjVindoDoBanco>();
Para preencher a combo box eu crio um método
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
O segredo é criar uma classe bem simples, só para visualizar as coisas no combo, e fazer essa classe implementar o método toString. Exemplo:
package guj;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ExemploJComboBox extends JFrame {
/** Esta é uma classe bem simples, que você usa só para preencher o combo. */
static class Feriado {
public Feriado (int dia, String mes, String nomeFeriado) {
this.dia = dia; this.mes = mes; this.nomeFeriado = nomeFeriado;
}
public int getDia() {
return dia;
}
public String getMes() {
return mes;
}
public String getNomeFeriado() {
return nomeFeriado;
}
public void setDia(int dia) {
this.dia = dia;
}
public void setMes(String mes) {
this.mes = mes;
}
public void setNomeFeriado(String nomeFeriado) {
this.nomeFeriado = nomeFeriado;
}
/** Este método é o que você usa para mostrar um feriado no combo */
@Override
public String toString() { return nomeFeriado; }
private String nomeFeriado;
private int dia;
private String mes;
}
public ExemploJComboBox() {
super();
initialize();
}
/**
* Este é o método ao qual você deve prestar atenção. Entenda-o direitinho!
*/
private JComboBox getCboFeriados() {
if (cboFeriados == null) {
cboFeriados = new JComboBox();
DefaultComboBoxModel dcbm = (DefaultComboBoxModel) cboFeriados.getModel();
dcbm.addElement(new Feriado (7, "setembro", "Independência"));
dcbm.addElement(new Feriado (15, "outubro", "Proclamação da República"));
dcbm.addElement(new Feriado (25, "dezembro", "Natal"));
cboFeriados.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Feriado feriadoSelecionado = (Feriado) cboFeriados.getSelectedItem();
if (feriadoSelecionado == null) return;
lblFeriadoEscolhido.setText( "O feriado escolhido é " +
feriadoSelecionado.getNomeFeriado() +
", que ocorre em " +
feriadoSelecionado.getDia() +
" de " +
feriadoSelecionado.getMes());
}
});
}
return cboFeriados;
}
private JPanel getJContentPane() {
if (jContentPane == null) {
lblFeriadoEscolhido = new JLabel();
lblFeriadoEscolhido.setText("");
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getCboFeriados(), BorderLayout.NORTH);
jContentPane.add(lblFeriadoEscolhido, BorderLayout.SOUTH);
}
return jContentPane;
}
private void initialize() {
this.setSize(500, 100);
this.setContentPane(getJContentPane());
this.setTitle("Exemplo JComboBox");
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ExemploJComboBox thisClass = new ExemploJComboBox();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JComboBox cboFeriados = null;
private JLabel lblFeriadoEscolhido = null;
}
Note que você adiciona Objetos (neste caso instâncias da classe Feriado) no combo, não Strings.
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
while(resultSet.next()){
jComboBox1.addItem(resultSet.getString("modalidade"));
}
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 = new ArrayList<>();
public void atualizarComboBox(){
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…
Grato.