Como passar os valores de um List para um jComboBox

Ola pessoal, n estou conseguindo passar os valores de um List para um jcombobox, alguem pode me ajudar?

Meu codigo ta assim:

        DAOBDS dao = new BDSDAO() ;
        this.jCboBDS.addItem( dao.todosBDS() ) ;            

meu dao ta retornando uma lista.

Desde ja muito obrigadu

Oii …

acho q esse exemplo pode te ajudar :

java.util.List<Object> a = ConhecimentoDAO.getVeiculos(co, 1);   
  
// Essa eh uma simples Lista com Strings - os nomes   
java.util.List<String> nomeVeiculo = (java.util.List<String>)a.get(1);   
DefaultComboBoxModel modeloVeiculo   = new DefaultComboBoxModel(nomeVeiculo.toArray());   
comboVeiculo.setModel(modeloVeiculo);  

Até mais … :wink:

Oi, obrigadu pela sua resposta.

Mas ainda n resolveu .

Olha o q tah acontecendo:
Tou jogando em uma lista o nome dos BD cadastrados no MYSQL.
os nomes são por exemplo:

BD_Super
BD_Teste

Mas qdo eu passo para o combo tah vindo:

br.com.sintegra.bancos.bancosCadastrados@76f2e8
br.com.sintegra.bancos.bancosCadastrados@76f2a4

onde br.com.sintegra.bancos
é o pacote
bancosCadastrados é a classe BDS com seters e geters com String BD

Muito loko, devo ta fazendo alguma coisa errada.

Olha meu codigo

Classe BDS:

/*

  • bancosCadastrados.java
  • Created on 18 de Dezembro de 2007, 23:05
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

package br.com.sintegra.dados;

/**

  • A classe bancosCadastrados controla o fluxo de dados referentes a

  • Banco de Dados

  • @author Odair
    */
    public class bancosCadastrados {

    private String BD ;

    public bancosCadastrados( String BD ) {
    this.BD = BD ;
    }

    public String getBD() {
    return BD;
    }

    public void setBD( String BD ) {
    this.BD = BD;
    }
    }

Dao BDS

/*

  • BDSDAO.java
  • Created on 18 de Dezembro de 2007, 23:09
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

package br.com.sintegra.daos;

import br.com.sintegra.dados.bancosCadastrados;
import br.com.sintegra.utils.connectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
*

  • @author Odair
    */
    public class BDSDAO implements DAOBDS {

    private Connection conn = null ;

    public BDSDAO() throws Exception {
    try {
    this.conn = connectionFactory.conn ;
    } catch ( Exception e ) {
    throw new Exception ( "Erro: " +
    “:\n” + e.getMessage() ) ;
    }
    }

    public List todosBDS () throws Exception {

     PreparedStatement ps = null ;
     Connection conn = null ;
     ResultSet rs = null ;
     try {            
         conn = this.conn ;
         ps = conn.prepareStatement( "SHOW DATABASES" ) ;
         rs = ps.executeQuery () ;
         List <bancosCadastrados> list = new ArrayList <bancosCadastrados>() ;
         while ( rs.next() ) {        
             String bd = rs.getString( 1 ) ;
             list.add( new bancosCadastrados( bd ) ) ;
         }
         return list ;
     } catch ( SQLException sqle ) {
         throw new Exception ( sqle ) ;
     }
    

    }

}

Preenchendo o Combo:

        DAOBDS dao = new BDSDAO() ;
        List bds = dao.todosBDS() ;

// this.jCboBDS.addItem( bds ) ;

        DefaultComboBoxModel modeloVeiculo   = new DefaultComboBoxModel(bds.toArray());     
        //comboVeiculo.setModel(modeloVeiculo);               
        this.jCboBDS.setModel(modeloVeiculo ) ;

Vlw

thais, cuidado com copiar e colar, as vezes você pode postar algum código que parece fazer o que alguém quer mas na verdade não o faz. É só uma dica :smiley:

taures, use a tag code para ajudar-nos a ver seu código…
Vamos fazer algumas alterações…

1 - Mude o nome da classe bancosCadastrados para BancosCadastrados (seria melhor ainda mudar para BancoDeDados… um substantivo no singular… enfim…)
2 - Como vc retorna uma lista de BancosCadastrados, mude o retorno do seu método todosBDS() para List.

Os componentes swing trabalham com o padrão MVC, sendo assim, os componentes baseados em items (JList, JTable, JTree, etc) vão trabalhar com um modelo que vai conter os dados que serão renderizados pelo componente.
No caso do JComboBox, vc vai trabalhar com o ComboBoxModel.

DefaultComboBoxModel modelo = new DefaultComboBoxModel(); List<BancosCadastrados> lista = new BDSDAO().todosBDS(); for ( BancosCadastrados b : lista ) { modelo.addElement( b.getBD() ); } seuComboBox.setModel( modelo );

Uma dica. Para a visualização do modelo, será usado o método toString() do objeto. Caso você queira inserir o objeto BancosCadastrados no combo você pode, assim você vai ter o objeto completo como item do combo. Para você ter uma visualização coerente no componente, sobrescreve toString na classe BancosCadastrados para mostrar a representação da mesma.

// na class BancosCadastrados public String toString() { return getBD(); }

Ai você faria assim para adicionar o objeto no modelo

modelo.addElement( b );

Isso é útil quando você estiver trabalhando com outros objetos, por exemplo Cidade ou Pessoa. AI você tm o objeto inteiro dentro do combo e a visualização só mostra o que você especificou no toString().

Mude o valor retornado pelo toString para você ver o que acontece e para entender.

Até mais!

o esquema eh o seguinte… sobreescreve o metodo toString() da classe que vc ta adicionando no combo!
la dentro faz retornar soh a descricao que vc quer do bean…

abraco

Exato!!!

De:

public String gtBD() {
return getBD();
}

para:

public String toString() {
return getBD();
}

Muitooo Obrigaduuu Pessoal!!!

P.S: Mais duas perguntinhas, ainda n cheguei nesse ponto, mas vou precisar, e se ao invez de combo fosse uma grid? Como eu faria? E como percorrer os dados de uma list?

Vlw

Você leu o que eu falei sobre modelos???

javax.swing.table.TableModel e
javax.swing.table.DefaultTableModel

Até mais!

Perdão! Relamente…

Vlw, abraços!

Pessoal…
Tem alguém com o nick parecido com o meu ai…

Moderadores, tomem uma providência.