JComboBox

5 respostas
L

Preciso de ajuda !

como faço para criar um jcombobox que mostre uma string para o usuario e quando ele selecionar alguma opção, o combobox retorne um valor inteiro, como o lookupcombobox do delphi ?

Obrigado

5 Respostas

hmichel

Se você for estudar Swiong, verá que todos os componentes utilizam o padrão de desenvolvimento MVC, sendo assim, cada componente utiliza Models para armazenar seus dados.
O JComboBox, por padrão, implementa um Model chamado DefaultComboBoxModel, o qual não suporta armazenar um valor de exibição e um valor qualquer correspondente à escolha.

Para adicionar esta característica ao JCombox, você deve então utilizar-se de outro Model, o qual dê suporte a esta feature.

Lucas_Teixeira

Bom, eu acho que a gente poderia ‘burlar’ isto criando um objeto do tipo:

public class ObjetoComIndice { public String descricao; public int indice; public ObjetoComIndice(String d, int i) { descricao = d; indice = i; } //gets e sets public String toString() { return descricao; } }

Ai na hora de adicionar na combo, ao inves de fazer isto:

combo.add("Lucas"); combo.add("Jose"); combo.add("João");

Optamos por:

combo.add(new ObjetoComIndice("Lucas", 2)); combo.add(new ObjetoComIndice("Jose", 3)); combo.add(new ObjetoComIndice("João", 7));

Bingo. Depois na hora que resgatamos, fazemos um cast de Object para ObjetoComIndice e é só utilizar o getIndice() dele.

Resumindo tudo isso que digitei. JComboBox suporta Objetos também.

Nao podemos esquecer de sobrescrever o toString(), pois ele será chamado quando este objeto for adicionado na combo.

L

Valeu pessoal, vcs me ajudaram d+ ! ! ! !

Só uma última pergunta Lucas:

Tentei usar os métodos

setSelectedItem(ObjetoComIndice) e setSelectedIndex(ObjetoComIndice().getIndex())

e nenhum dos dois funcionaram !

Eu teria q fazer a seleção “no braço” usando um loop ou coisa do tipo ?

Mais uma vez, valeu pela ajuda !

Lucas_Teixeira

este método get/setSelectedIndex() vai te retonar o index do objeto selecionado na combo, como 0 para o primeiro, 1 para o segundo, 2 para o terceiro e assim sucessivamente… o que vc tem que usar é:

indiceDoObjetoSelecionado = ((ObjetoComIndex) combo.getSelectedValue()).getIndex();
pauloperes

Olá,

Aproveitando o tópico de vcs, estoun tendo problemas na exibição dos dados no JCombox, tenho o seguinte código:

// Preenchendo os items do Jcombox de Estágios
        EstagioDAO estagio_dao = new EstagioDAO(this.conexao);
        
        java.util.List<Estagio> list_estagio = new java.util.ArrayList<Estagio>();
        
        // Recebendo a Consulta do Banco de Dados
        list_estagio = estagio_dao.SelectEstagio();   
        
        // Preenchendo o JComboBox
        for (Estagio estagio : list_estagio){
            fieldEstagio.addItem(new recuperaIndiceJCombobox(estagio.getNome(),estagio.getId()));
        }

O problema é que no Jcombobox aparece no nome do objeto recuperaIndiceJCombox();

Como faço para mostrar somente a string.

Ja coloquei o toString

Valeu
Paulo

Criado 27 de dezembro de 2004
Ultima resposta 14 de mai. de 2005
Respostas 5
Participantes 4