Popular jComboBox

6 respostas
douglasduarte360
Pessoal, estou tentando popular o ComboBox, com os dados que vem do Banco de dados. Tenho o seguinte metodo de consulta.
public ArrayList<Cursos> combocurso() throws SQLException{
   
         ArrayList<Cursos> listar = new ArrayList<>();   
  stmt = connection.createStatement();
      resultset = null;
      try {
	 
          
          PreparedStatement sql = connection.prepareStatement("SELECT * FROM Cursos");
	   resultset = sql.executeQuery();
	   while(resultset.next()){
	    Cursos curso = new Cursos();
            
            
	  	    curso.setCursos(resultset.getString("Cursos"));
            
            listar.add(curso);
     	    
	   }
	  } catch (SQLException e) {
  }
    
     return listar;
    
  }
Esse metodo me traz o que eu quero,que é só os Cursos.

A minha dificuldade é em atribuir esse metodo no ComboBox.
Ja tentei de varias formas e nao consegui.
Tem como me darem uma Luz?? :roll:

6 Respostas

gusthavosouza

Por exemplo o que voce quer passar para o Jcombo ? o Array list ou com as opções de curso ?

passa o Arraylist pro JComboBox por exemplo

ArrayList&lt;String&gt; mes = new ArrayList&lt;String&gt;();

mes.add("Janeiro");
mes.add("Fevereiro");
mes.add("Março");
mes.add("Abril");
mes.add("Maio");
mes.add("Junho");
mes.add("Julho");
mes.add("Agosto");
mes.add("Setembro");
mes.add("Outubro");
mes.add("Novembro");
mes.add("Dezembro");

for (int x = 0; x &lt; mes.size(); x++) {

} // for para imprimir os items do Array dentro do combobox

JComboBox comboMes = new JComboBox(mes.toArray());// passando o Arraylist para o Combobox


montaDia.add(lMes);
montaDia.add(comboMes);

//montaDia  e meu metodo de montar as datas dos meus JComboBox


return montaDia;
}


}

eu fiz assim ve se ajuda nao sei se e a melhor forma,

mas voce pode jogar todos os cursos que voce tem dentro do
ArrayList<Cursos> listarCursos = new ArrayList<Cursos>();
pegando eles do Banco de dados e adicionar ele ao seu ComboBox

douglasduarte360

Cara eu ja tenho o Array, que venho com os dados do banco de dados, se eu coloco para imprimir esse Array, aparece o que eu quero.

Mas não estou conseguindo colocar esse array no jComboBox.
Meu metodo ficou assim

public void combo() throws SQLException{
    UsuarioDAO dao = new UsuarioDAO();
 	  dao.combocurso();
          ArrayList<Cursos> listar = dao.combocurso(); //O Array listar Ja tem Todos Os dados que preciso.
     
       jComboCurso.addItem(listar);//tentando adicionar o Array no ComboBox

//Chamo esse metodo combo() no metodo principal.
da o seguinte erro
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at erp.JFCad_turma.jComboCursoActionPerformed(JFCad_turma.java:441)
	at erp.JFCad_turma.access$100(JFCad_turma.java:22)
	at erp.JFCad_turma$2.actionPerformed(JFCad_turma.java:135)
	at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1260)
	at javax.swing.JComboBox.contentsChanged(JComboBox.java:1331)
	at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118)
	at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:94)
	at javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:132)
	at javax.swing.JComboBox.addItem(JComboBox.java:718)
	at erp.JFCad_turma.combo(JFCad_turma.java:42)
	at erp.JFCad_turma.<init>(JFCad_turma.java:34)
	at erp.JFCad_turma$6.run(JFCad_turma.java:505)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:682)
	at java.awt.EventQueue$3.run(EventQueue.java:680)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
gusthavosouza

Faz isso na criação do seu comboBox

JComboBox comboCurso = new JComboBox(listar.toArray());

ai quando seu metodo montaTela, montaCombobox sei la
adicionar o

montaTela.add(comboCurso);
automaticamente o comboCurso ja vai conter o Array dentro dele,

douglasduarte360

Nao tenho MontaTela, nem MontaComboBox, eu criei ele pelo Swing, visualmente, não por código.
e quando implemento JComboBox comboCurso = new JComboBox(listar.toArray()); no “Personalizar Código” da erro.

gusthavosouza

ai me pegou rs, da uma olhada nisso , mas como voce nao fez na unha fica meio fod4

da uma olhada no meu projeto no gitHub

fiz tudo na unha entao da pra aprender bem mais

https://github.com/gusthavosouza/swing-jdbc-agenda-java

http://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html

douglasduarte360
Até apareceu os dados. com o seguinte método:
public void combo() throws SQLException{
          
           UsuarioDAO dao = new UsuarioDAO();
       
            dao.combocurso();
        
          List<Cursos> listar = dao.combocurso();
          for( Cursos curso: listar ){     
            jComboCurso.addItem( curso );     
}  
    
    }
Mas nao da para escolher as outras opção que aparecem. Ex:Aparece la, item1, item2, item3. Mas quando clico em Item3, ele nao seleciona, fica aparecendo o item1
Criado 7 de fevereiro de 2013
Ultima resposta 7 de fev. de 2013
Respostas 6
Participantes 2