Problema com JComboBox

4 respostas
psyhclo

Estou tentando popular um JComboBox que eu define no Jframe como funcionarios. Pra isso eu tenho um metodo chamado getNome que pega a pesquisa do metodo consultar_No_Banco que esta na classe FuncionarioDAO. So que ele da um erro qdo eu executo :

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at main.view.Agendamento.getNomes(Agendamento.java:266)

at main.view.Agendamento.<init>(Agendamento.java:62)

at main.view.Inicio.JMenu2MousePressed(Inicio.java:242)

at main.view.Inicio.access$600(Inicio.java:12)

at main.view.Inicio$7.mousePressed(Inicio.java:131)

at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)

at java.awt.Component.processMouseEvent(Component.java:6038)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)

at java.awt.Component.processEvent(Component.java:5806)

at java.awt.Container.processEvent(Container.java:2058)

at java.awt.Component.dispatchEventImpl(Component.java:4413)

at java.awt.Container.dispatchEventImpl(Container.java:2116)

at java.awt.Component.dispatchEvent(Component.java:4243)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3983)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)

at java.awt.Container.dispatchEventImpl(Container.java:2102)

at java.awt.Window.dispatchEventImpl(Window.java:2440)

at java.awt.Component.dispatchEvent(Component.java:4243)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

A classe esta abaixo:

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import javax.swing.ComboBoxModel;
import main.model.dao.ClienteDAO;
import main.model.dao.AgendaDAO;
import main.model.dao.ServicoDAO;
import main.control.ClientePOJO;
import java.util.ArrayList;
import javax.swing.JComboBox;
import java.sql.*;
import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import main.control.ServicoPOJO;
import main.model.dao.FuncionarioDAO;
import main.view.TableRenderDemo.MyTableModel;
import javax.swing.DefaultComboBoxModel;
/**
 *
 * @author  Roger
 */
public class Agendamento extends javax.swing.JFrame {
    private ClienteDAO ClienteDao;
    private AgendaDAO agendaDao;
    private ServicoDAO servicoDao;
    private ClientePOJO Cliente;
    private ClientePOJO ClientePojo;
    private ArrayList cli;
    private ClientePOJO clientePojo;
    private static ArrayList&lt;ClientePOJO&gt; clienteArrayList;
    private ArrayList linhas = null;  
    private String [] colunas = null;
    private int incremento=0;
    private ServicoDAO ServicoDao;
    private ServicoPOJO ServicoPojo;   
    private Connection con;
    private FuncionarioDAO funcionarioDao;
    private DefaultComboBoxModel comboBox;    
    private JComboBox funcionario;
   


    /** Creates new form Agendamento */
    public Agendamento() {
       super("Agendamento de Servicos");
        initComponents();
        ClienteDao = new ClienteDAO();       
        ServicoDao = new ServicoDAO();
        Cliente = new ClientePOJO();       
         funcionarios.setModel(new javax.swing.DefaultComboBoxModel(getNomes()));
    }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
if(!(this.nome_cli.getText().equalsIgnoreCase(ClienteDAO.SEM_NOME)))
//this.Tabela.getModel().setValueAt(ClienteDao.getNomeCliente(this.nome_cli.getText()) , incremento++, 0);
this.cliente.setText(ClienteDao.getNomeCliente(this.nome_cli.getText()));
}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

}

private void funcionariosActionPerformed(java.awt.event.ActionEvent evt) {

}
public String[] getNomes(){
    String[] nomes = null;
    for(int i=0;i&lt;funcionarioDao.consultar_No_banco().size();i++){
    nomes[i] = (String) funcionarioDao.consultar_No_banco().get(i);
    }
    return nomes;
    
   }


public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Agendamento().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JTextField cliente;
    private javax.swing.JComboBox funcionarios;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JFormattedTextField jFormattedTextField1;
    private javax.swing.JFormattedTextField jFormattedTextField2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTextField nome_cli;
    private javax.swing.JComboBox servicos;
    // End of variables declaration

}

>

4 Respostas

milarflores

oi man tou com o mesmo mesmo igual problema so que meu codigo é menor shauhsuahsa
não tou conseguindo fazer esse setmodel não

import classesDAO.EmbarcacaoDAO;

import classesDTO.EmbarcacaoDTO;

import java.util.ArrayList;

import java.util.Iterator;

/**
*

  • @author Milar
    */
    public class LayoutTelaEmbarcacao {
public String[] comboxEmbarcacaoCadastradas() {

EmbarcacaoDAO dao = new EmbarcacaoDAO();

ArrayList lista = dao.mostrarEmbarcacao();

String[] aux = new String[lista.size()];

int i = 0;

for (Iterator it = lista.iterator(); it.hasNext() {

EmbarcacaoDTO e = (EmbarcacaoDTO) it.next();

aux[i] = e.getNomeDaEmbarcacao();

i++;

}

return aux;

}

}

o resultado que aux eu quero ele dentro de um jCombox na minha tela. porem ela fica no pacote view e este codigo de consulta fica no pacote util eu adotei a arquitetura MVC em camadas.
Vlw desde já…

CrOnNoS

psyhclo:
Estou tentando popular um JComboBox que eu define no Jframe como funcionarios. Pra isso eu tenho um metodo chamado getNome que pega a pesquisa do metodo consultar_No_Banco que esta na classe FuncionarioDAO. So que ele da um erro qdo eu executo :

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at main.view.Agendamento.getNomes(Agendamento.java:266)

at main.view.Agendamento.<init>(Agendamento.java:62)

at main.view.Inicio.JMenu2MousePressed(Inicio.java:242)

at main.view.Inicio.access$600(Inicio.java:12)

at main.view.Inicio$7.mousePressed(Inicio.java:131)

at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)

at java.awt.Component.processMouseEvent(Component.java:6038)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)

at java.awt.Component.processEvent(Component.java:5806)

at java.awt.Container.processEvent(Container.java:2058)

at java.awt.Component.dispatchEventImpl(Component.java:4413)

at java.awt.Container.dispatchEventImpl(Container.java:2116)

at java.awt.Component.dispatchEvent(Component.java:4243)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3983)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)

at java.awt.Container.dispatchEventImpl(Container.java:2102)

at java.awt.Window.dispatchEventImpl(Window.java:2440)

at java.awt.Component.dispatchEvent(Component.java:4243)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

A classe esta abaixo:

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import javax.swing.ComboBoxModel;
import main.model.dao.ClienteDAO;
import main.model.dao.AgendaDAO;
import main.model.dao.ServicoDAO;
import main.control.ClientePOJO;
import java.util.ArrayList;
import javax.swing.JComboBox;
import java.sql.*;
import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import main.control.ServicoPOJO;
import main.model.dao.FuncionarioDAO;
import main.view.TableRenderDemo.MyTableModel;
import javax.swing.DefaultComboBoxModel;
/**
 *
 * @author  Roger
 */
public class Agendamento extends javax.swing.JFrame {
    private ClienteDAO ClienteDao;
    private AgendaDAO agendaDao;
    private ServicoDAO servicoDao;
    private ClientePOJO Cliente;
    private ClientePOJO ClientePojo;
    private ArrayList cli;
    private ClientePOJO clientePojo;
    private static ArrayList&lt;ClientePOJO&gt; clienteArrayList;
    private ArrayList linhas = null;  
    private String [] colunas = null;
    private int incremento=0;
    private ServicoDAO ServicoDao;
    private ServicoPOJO ServicoPojo;   
    private Connection con;
    private FuncionarioDAO funcionarioDao;
    private DefaultComboBoxModel comboBox;    
    private JComboBox funcionario;
   


    /** Creates new form Agendamento */
    public Agendamento() {
       super("Agendamento de Servicos");
        initComponents();
        ClienteDao = new ClienteDAO();       
        ServicoDao = new ServicoDAO();
        Cliente = new ClientePOJO();       
         funcionarios.setModel(new javax.swing.DefaultComboBoxModel(getNomes()));
    }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
if(!(this.nome_cli.getText().equalsIgnoreCase(ClienteDAO.SEM_NOME)))
//this.Tabela.getModel().setValueAt(ClienteDao.getNomeCliente(this.nome_cli.getText()) , incremento++, 0);
this.cliente.setText(ClienteDao.getNomeCliente(this.nome_cli.getText()));
}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

}

private void funcionariosActionPerformed(java.awt.event.ActionEvent evt) {

}
public String[] getNomes(){
    String[] nomes = null;
    for(int i=0;i&lt;funcionarioDao.consultar_No_banco().size();i++){
    nomes[i] = (String) funcionarioDao.consultar_No_banco().get(i);
    }
    return nomes;
    
   }


public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Agendamento().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JTextField cliente;
    private javax.swing.JComboBox funcionarios;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JFormattedTextField jFormattedTextField1;
    private javax.swing.JFormattedTextField jFormattedTextField2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTextField nome_cli;
    private javax.swing.JComboBox servicos;
    // End of variables declaration

}

>

Seu erro o compilador está sendo bem específico:
no seu método getNome você inicializa a variável nomes com “null”. Logo se nenhum nome for encontrado no “for” que tem logo a seguir, esse null é retornado.
Quando você tenta criar o model passando “null” como parâmetro ele está dando seu erro.

psyhclo

Eu inicializei o vetor nomes com {""} so q agora ta dando um erro

java.lang.NullPointerException
at main.view.Agendamento.<init>(Agendamento.java:64)
at main.view.Agendamento$4.run(Agendamento.java:282)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

package main.view;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import javax.swing.ComboBoxModel;
import main.model.dao.ClienteDAO;
import main.model.dao.AgendaDAO;
import main.model.dao.ServicoDAO;
import main.control.ClientePOJO;
import java.util.ArrayList;
import javax.swing.JComboBox;
import java.sql.*;
import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import main.control.ServicoPOJO;
import main.model.dao.FuncionarioDAO;
import main.view.TableRenderDemo.MyTableModel;
import javax.swing.DefaultComboBoxModel;
/**
 *
 * @author  Roger
 */
public class Agendamento extends javax.swing.JFrame {
    private ClienteDAO ClienteDao;
    private AgendaDAO agendaDao;
    private ServicoDAO servicoDao;
    private ClientePOJO Cliente;
    private ClientePOJO ClientePojo;
    private ArrayList cli;
    private ClientePOJO clientePojo;
    private static ArrayList&lt;ClientePOJO&gt; clienteArrayList;
    private ArrayList linhas = null;  
    private String [] colunas = null;
    private int incremento=0;
    private ServicoDAO ServicoDao;
    private ServicoPOJO ServicoPojo;   
    private Connection con;
    private FuncionarioDAO funcionarioDao;
    private DefaultComboBoxModel comboBox;    
    


    /** Creates new form Agendamento */
    public Agendamento() {
       super("Agendamento de Servicos");
        initComponents();
        ClienteDao = new ClienteDAO();       
        ServicoDao = new ServicoDAO();
        Cliente = new ClientePOJO();     
        //funcionarios.setModel(new javax.swing.DefaultComboBoxModel(getNomes()));
        try{
        System.out.println(funcionarioDao.consultar_No_banco());
        }catch(NullPointerException e){
        e.printStackTrace();
        }

    }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
if(!(this.nome_cli.getText().equalsIgnoreCase(ClienteDAO.SEM_NOME)))
//this.Tabela.getModel().setValueAt(ClienteDao.getNomeCliente(this.nome_cli.getText()) , incremento++, 0);
this.cliente.setText(ClienteDao.getNomeCliente(this.nome_cli.getText()));                                        
}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

}                                        

private void funcionariosActionPerformed(java.awt.event.ActionEvent evt) {                                             

}                                            
public String[] getNomes(){
    String[] nomes = {""};
    for(int i=0;i&lt;funcionarioDao.buscaFuncionario().size();i++){
    nomes[i] =  (String) funcionarioDao.buscaFuncionario().get(i);
    }
    return nomes;  
    
   }


public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Agendamento().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JTextField cliente;
    private javax.swing.JComboBox funcionarios;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JFormattedTextField jFormattedTextField1;
    private javax.swing.JFormattedTextField jFormattedTextField2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTextField nome_cli;
    private javax.swing.JComboBox servicos;
    // End of variables declaration

}
>
milarflores

Man toda vez que eu faço um array de String eu faço isso aí

exemplo :

public String[] comboxEmbarcacaoCadastradas() {

EmbarcacaoDAO dao = new EmbarcacaoDAO();

ArrayList lista = dao.mostrarEmbarcacao();

String[] aux = new String[lista.size()];

int i = 0;

for (Iterator it = lista.iterator(); it.hasNext() {

EmbarcacaoDTO e = (EmbarcacaoDTO) it.next();

aux[i] = e.getNomeDaEmbarcacao();

i++;

}
Criado 20 de novembro de 2009
Ultima resposta 21 de nov. de 2009
Respostas 4
Participantes 3