Boa tarde pessoal,
Sou iniciante em java e estou precisando tirar um dúvida sobre como listar os dados de banco MySQL em um JcomboBox, estou utilizando a IDE Netbeans.
Criei uma classe dao para listar dados em um ArrayLista
[code]public List getListaCombo() throws SQLException{
String sql = "selecct * from cadastro";
PreparedStatement stmt = this.conexao.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
List<Cadastro> minhalista = new ArrayList<Cadastro>();
while (rs.next()){
Cadastro cad = new Cadastro();
cad.setNome(rs.getString("nome"));
}
rs.close();
stmt.close();
return minhalista;
}[/code]
Depois criei uma classe JFrame
[code]List cadastros;
private void CbxCadastroActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CadastroDao dao = new CadastroDao();
mostraPesquisa(cadastros);
}
private void mostraPesquisa(List cadastros){
//String[] linha = new String [] {null};
for (int i = 0; i < cadastros.size(); i++) {
CbxCadastro.addItem(cadastros.get(i).getNome());
}
}[/code]
Não está listando nada no combobox,
se alguem poder me ajudar, agradeço…
Teu raciocínio está correto. Voê precisa armazenar o resultado da consulta numa lista, depois precisa passar para a combo? Como vc fez um classe dao, vc precisa então instanciá-la no frame(totalmente contrário ao padrão mvc), para puxar o método que faz a lista. Aí é que vc joga essa lista com while na combo.
Como vc está começando, pode ser que o site:
private void CbxCadastroActionPerformed(java.awt.event.ActionEvent evt) {
CadastroDao dao = new CadastroDao();
try {
List<Cadastro> minhalista = dao.getListaCombo();
for (int i = 0; i < minhalista.size(); i++) {
CbxCadastro.addItem(minhalista.get(i).getNome());
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,"Erro no CbxCadastro ! " + ex);
}
}
Mas está dando esse erro…
[list]run:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Dao.CadastroDao.getListaCombo(CadastroDao.java:27)
at Forms.JFCadastro.CbxCadastroActionPerformed(JFCadastro.java:165)
at Forms.JFCadastro.access$000(JFCadastro.java:27)
at Forms.JFCadastro$1.actionPerformed(JFCadastro.java:69)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:567)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:816)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:480)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)[/list]
Não consequi listar na combo, se vc puder detalhar mais um pouco, agradeço.
é porque vc colocou no actionPerformed o código para dar carga na combo, então a cada clique ele faz uma carga. vc pode carregar a combo logo ao criá-la. Ou limpar a combo antes de carregar.