Inserir item e index em combobox

4 respostas
O

Olá pessoal, meu problema agora é que estou querendo alimentar meu combobox com dados do BD.
Segue o codigo abaixo.

public void carregaCombo() {
        jComboBox1.removeAllItems();
        try {
            bd = new Bd();
            bd.conecta();
            String sql = "SELECT a.idstress,a.descricao, b.cepa FROM stress a join linhagem b where a.idlinhagem = b.idlinhagem";
            pst = bd.conn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                int x = rs.getInt("a.idstress");
                String y = rs.getString("a.descricao");
                String z = rs.getString("b.cepa");
                jComboBox1.add(y + " - " + z,x);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

eu queria que os items do combo fossem a junção da descrição + cepa, e o index fosse o idstress.
mas o codigo nao funciona, alguem sabe qual o erro ?
Obrigado

4 Respostas

I

no meu uso o método addItem e dá certo

O

O problema do additem é q ele so permite adicionar o item, vc nao pode setar o valor do indice.
no meu caso quero setar o item e o indice.

M

porque o combobox por padrao seta item do tipo String

para funcionar da maneira que vc quer, entao tem que criar o seu proprio ComboBoxModel e ListCellRender

http://download.oracle.com/javase/tutorial/uiswing/components/combobox.html

I

já que você quer jogar tudo em uma combo box pode ser feito assim apesar que não é a melhor prática mais funciona

1º Crie uma classe que guardará os dados do vindo do seu banco por exemplo

public class Teste{

        private int id;
        private int nome;
        //mais atributos aqui

       //crie também metodos para acesso get e set

       
       //sobreponha essa método para mostrar os dados na combo
       public String toString(){
              return id+" - "+nome;
       }


}

busque os dados normalmente agora ao invés de adicionar em uma String crie um novo objeto e os adicione ex

Teste teste = new Teste();
//adicione os dados vindo do banco através dos métodos sets
teste.setId(5);
teste.setNome("nome");

na hora de adicionar na combo box agora adicione o objeto inteiro ex

suaCombo.addItem(teste);

na hora de pegar o dado escolhido da combo ele irá te retornar um objeto do tipo Teste ai você pode buscar o atributo id dele

flw

Criado 11 de julho de 2011
Ultima resposta 11 de jul. de 2011
Respostas 4
Participantes 3