Olá pessoal, ja faz um tempo que eu estou procurando um modo de implementar isso, o problema é o seguinte: tenho um JComboBox, com nomes de funcionários que busquei dentro do bd, e o que eu quero fazer é pegar o índice do item selecionado dentro do JComboBox, o problema é que dentro do bd podem ter varias pessoas com o mesmo nome então o .getSelectedIndex() não funciona pois ele retorna o valor do primeiro encontrado e não o qual o usuário escolheu, ou então atribuir um valor a cada posição do JComboBox. Em VB seria algo como:
cbx_nomeFuncionario.DataSource = ds.Tables("funcionarios")
cbx_nomeFuncionario.DisplayMember = "nome"
cbx_nomeFuncionario.ValueMember = "id"
eu tenho duas tabelas com os seguintes campos:
usuario: codUsuario, codFuncionario, …
funcionario: codFuncionario, nome, …
como disse a cima, o que gostaria de fazer é atribuir um valor a posição do JComboBox, se existir um método de atribuir um valor (codFuncionario) para cada posição do seu respectivo nome, para que eu possa gravar a o valor da posição (codFuncionario) dentro da tabela usuario, e obviamente como atribuir esse valor de índece a uma variavel, agradeceria se alguem me ajudasse na implementação desse código, muito obrigado.
Olá amigo
private void inicializaCombobox() throws Exception {
try {
stmt = dbConnection.createStatement();
// preenche a lista de Setores
rs = stmt.executeQuery("select setor from setores order by setor");
cboSetor.addItem("Selecione um item");
while(rs.next()){
cboSetor.addItem(rs.getObject(1));
}
cboSetor.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
mostraSetor();
}
} });
} catch (Exception ex) {
Logger.getLogger(FramePatrimonio.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void mostraSetor() {
tfSetor.setText(cboSetor.getSelectedItem().toString());
}
acho que isso pode lhe ajudar.
Silvio Guedes
Olá Silvio,
adicionar campos ao JComboBox não é problema… o que acontece é que cada nome adicionado no combobox tem seu próprio codFornecedor, eu poderia usar o .getSelectedIndex() e usar o número retornado como o numero do codFornecedor, afinal de contas todos os registros de nome de funcionários estão dentro da combo, o problema é que se existir dois funcionários com o mesmo nome, e o usuário escolher o segundo funcionário o .getSelectedIndex() busca o índice do primeiro… e eu precisisaria do segundo pra uma possível atualização ou cadastro no bd, o que eu queria saber é como resolver esse problema de mostrar um valor mas utilizar outro, no caso o codigo correspondente ao nome entende?
mas mesmo assim muito obrigado pela atenção e ajuda.
olá amigo
vocẽ pode colocar no seu jcombobox os campos id,nome e quando for fazer a consulta pode usar os campos id para selecionar o registro que deseja.
http://www.guj.com.br/posts/list/7799.java
Silvio Guedes
Olá Gabriel, acredito que a forma mais fácil seja popular seu JComboBox com Models tendo o método “toString()” sobrescrito. Por exemplo:
Model:
public class Funcionario{
private String nome;
private long codigo;
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome = nome;
}
public long getCodigo(){
return codigo;
}
public void setCodigo(long codigo){
this.codigo = codigo;
}
@Override
public String toString(){
return nome;
}
}
Preencha o Model com os dados provenientes do BD (caso não utilize algum framework que o faça) e adicione-o no JComboBox como um item qualquer, exemplo:
Funcionario model = new Funcionario();
JComboBox combo = new JComboBox();
model.setNome("Gabriel");
model.setCodigo(3);
combo.addItem(model);
Depois, para buscar qualquer informação do elemento selecionado, basta buscar no model que fora colocado no JComboBox, exemplo:
[code]
((Funcionario)combo.getSelectedItem()).getCodigo();
((Funcionario)combo.getSelectedItem()).getNome();
etc…[/code]
Obs: não testei nada deste código, é só como exemplo mesmo.
Espero ter ajudado 
pois é romulobritta, tentei adequar seu código ao meu projeto mas infelizmente não consegui, pelo que vi, sua lógica é semelhante ao do meu primeiro post, mostrar um conteudo no combobox, mas trabalhar com outro, semelhante o código que usei em VisualBasic, mas encontrei uma solução para o meu problema aqui no fórum mesmo, JURO que procurei, mas no fim das contas um parceiro de projeto acabou achando aqui dentro, segue o link da resolução:
http://www.guj.com.br/posts/list/185749.java
resposta dada pelo jmozerPJ
agradeço a todos que postaram dando dicas de como resolver, muito obrigado. 