Colocar id e nome em uma combo

7 respostas
M

Olá, pessoal!
Essa é uma barbada, mas to me embananando…

tenho um select no banco:

SELECT id_cliente, nome_cliente FROM Clientes;

Agora quero pegar esses nome_cliente e colocar numa combobox, porém, o id_cliente tem que estar associado a esse nome.
Quando eu der um combo.selectedValue(), quero que ele retorne o id desse cliente e não o nome…

PS: Óbvio que na combo tem que aparecer apenas o nome!!!

Valeu gurizada!

7 Respostas

D

Uma solução para este problema é colocar no ComboBox não exatamente um String contendo o nome da pessoa, mas um objeto de uma classe que tenha como atributos o nome e a id da pessoa. Nesta classe vc implementa o método toString() fazendo retornar o nome da pessoa, já que o JComboBox utiliza o método toString para imprimir o objeto na lista.

Quando vc quiser saber quem está selecionado no combo vc recuperar o objeto selecionado fazendo um cast para essa classe que vc criou. Esse objeto recuperado possui a id da pessoa.

Não sei se fui claro, mas se precisar explico novamente.

M

mas se eu fizer:

public class MeuObjeto
{
  private int id;
  privat string nome;

  get's
  set's
   ...
}

// Outra classe
combo.add(meuObjeto);

Ele vai mostrar o obejto e não o nome

E

eae blz?

utilizando a ideia do dok

classe que armazena a informação do cliente

public class Cliente {
   private String id;
   private String nome;

   public Cliente() {
      this.setId( "" );
      this.setNome( "" );
   } 

   public void setId( String id ) { this.id = id; } 
   public void setNome( String nome ) { this.nome = nome; }

   public String getId() { return this.id; }
   public String getNome() { return this.nome; }

   public String toString() {
      return this.getNome();
   }
}

na sua consulta vc recupera cada registro e instancia um novo objeto Cliente no qual vc carrega com os dados do registro da consulta que vc
está recuperando, vc pode utilizar um Array para alocar os dados ou utilizar algo assim:

// classe de recuperação de dados da entidade cliente
...
import java.util.*;
...
LinkedList listaDeClientes = new LinkedList();
...

// recuperando dados do registro atual do resultado da consulta
// instanciando um objeto da classe cliente e carregando as informações
...
// alocando na lista de clientes
// objeto do registro atual do resultado da consulta que está sendo 
// alocado na lista de clientes consultados
listaDeclientes.add( cliente );
...

agora na sua classe onde tem o seu combo
vc vai fazer o seguinte recuperar o objeto do tipo linkedlist que
vc carregou com os dados de cada cliente

e no construtor do seu combo vc vai repassar um array de objetos

...
// instancia o combo repassando os clientes que vc recuperou
// na consulta
JComboBox combo = new JComboBox( listaDeClientes.toArray() );
...
// para recuperar o id do cliente do objeto vc chama o seguinte
String idCliente = ((Cliente)combo.selectedValue()).getId();
...

essa exemplificação usando como base a descrição do post anterior :wink:

[]´s

M

Olha…eu não testei exatamente isso que tu fez meu, mas acredito que n irá funcionar na hora de mostrar os valores na combo!!

Se eu fizer o que tu falou, vou mostrar Objetos Cliente na combo…e eu quero mostrar Strings com o nome deles…de resto eu concordo com teu código hehehe mas é que o meu problema é justo ai

Valeu

D

Cara, se você utilizar o que está descrito acima, vai dar certo. O JComboBox sempre joga strings para exibição. E essa string vem do método toString().

Se você implementar o método toString() da tua classe, por exemplo assim:

public String toString() { return "->" + this.getNome(); }

Vai aparecer no combo algo parecido com isso:

-> Juca
-> Maria
-> Joãozinho

Experimente antes

M

Obrigado cara!

Desculpe o mal jeito…não quiz parecer grosso

D

“mdtorbis”:
Obrigado cara!

Desculpe o mal jeito…não quiz parecer grosso

Sem crise amigo, não foi grosso não. O que importa é que você compreenda a sua dúvida e sinta-se a vontade para questionar. :grin: :wink:

Criado 31 de maio de 2005
Ultima resposta 1 de jun. de 2005
Respostas 7
Participantes 3