Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException (Resolvido)

4 respostas
S

Olá pessoal,
Estou fazendo sistema de venda, de um curso, onde temos a tela principal e uma tela cliente. Quando clico em um botão, btCliente, na minha tela principal o sistema chama o JFrame clientes.
Estava funcionando até fazer uma implementação no meu componente JTable, na barra propriedade, aba código, opção “Código de pré-criação”. A ideia é que ao clicar na linha do JTable os campos do JTextField fossem preenchidos. Implementado o seguinte código na opção “Código de pré-criação” do JTable:

tbClientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); lsmClientes = tbClientes.getSelectionModel(); lsmClientes.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e){ if(!e.getValueIsAdjusting()){ tbClientesLinhaelecionada(tbClientes); } } });

A partir dai quando estou tentando abrir o JFrame Clientes dá a seguinte mensagem:

run: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at br.com.sisvenda.Clientes.initComponents(Clientes.java:53) at br.com.sisvenda.Clientes.<init>(Clientes.java:38) at br.com.sisvenda.Principal.mostrarClientes(Principal.java:227) at br.com.sisvenda.Principal.btClientesActionPerformed(Principal.java:297) at br.com.sisvenda.Principal.access$000(Principal.java:21) at br.com.sisvenda.Principal$1.actionPerformed(Principal.java:69) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6216) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5981) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4583) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4413) 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: 21 segundos)

Ouvindo em javadebug Executando programa do usuário Ponto de interrupção na linha 226 na classe br.com.sisvenda.Principal pela thread AWT-EventQueue-0. Thread AWT-EventQueue-0 parada em Principal.java:226. Programa do usuário finalizado

Se eu tirar as informações da opção “Código de pré-criação” do JTable abre o JFrame normal.

Segue arquivos para vê se ajuda.

Muito grato

Josenias

4 Respostas

eberson_oliveira

Olá,

Em um trecho do seu código você fez o seguinte:

tbClientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); ... tbClientes = new javax.swing.JTable();

Note que você está trabalhando com tbClientes e somente depois instanciando… por isso deu erro de null pointer.

[]s

S

eberson_oliveira:
Olá,

Em um trecho do seu código você fez o seguinte:

tbClientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); ... tbClientes = new javax.swing.JTable();

Note que você está trabalhando com tbClientes e somente depois instanciando… por isso deu erro de null pointer.

[]s

Olá Eberson,

Funcionou perfeita. O problema era isso mesmo. Essa informação é adicionado no código automaticamente pelo netbeans, e em uma área que não posso alterar. Abrir o arquivo no bloco de nota e fiz o mudança.

Muito obrigado

Josenias

S
eberson_oliveira:
Olá,

Em um trecho do seu código você fez o seguinte:

tbClientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
...
tbClientes = new javax.swing.JTable();

Note que você está trabalhando com tbClientes e somente depois instanciando... por isso deu erro de null pointer.

[]s

Olá Eberson,
Percebi uma coisa. Essa informação encontra-se em "Generated Code", onde não posso alterar. Altero via bloco de nota abro o netbeans e faço qualquer coisa que altere o "Generated Code", dai ele volta a coloca o código antes de instanciar.

Tiro esse trecho do código...
tbClientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsmClientes = tbClientes.getSelectionModel();
        lsmClientes.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e){
                if(!e.getValueIsAdjusting()){
                    tbClientesLinhaSelecionada(tbClientes);
                }
            }
        });
e coloco abaixo desse:
setTitle("Clientes");
setResizable(false);

E se em algum momento em adicionar alguma informação que é colocado no "Generated Code" ele desfaz a alteração que fiz.

// &lt;editor-fold defaultstate="collapsed" desc="Generated Code"&gt;
    private void initComponents() {

        tfPesquisaCliente = new javax.swing.JTextField();
        btPesquisaCliente = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbClientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsmClientes = tbClientes.getSelectionModel();
        lsmClientes.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e){
                if(!e.getValueIsAdjusting()){
                    tbClientesLinhaSelecionada(tbClientes);
                }
            }
        });
        tbClientes = new javax.swing.JTable();
        jLabel1 = new javax.swing.JLabel();
        tfNome = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        tfEndereco = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        tfBairro = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        tfCidade = new javax.swing.JTextField();
        tfUF = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        tfCEP = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        tfTelefone = new javax.swing.JTextField();
        btNovo = new javax.swing.JButton();
        btAlterar = new javax.swing.JButton();
        btCancelar = new javax.swing.JButton();
        btfechar = new javax.swing.JButton();

        setTitle("Clientes");
        setResizable(false);

        btPesquisaCliente.setText("Pesquisar");
        btPesquisaCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPesquisaClienteActionPerformed(evt);
            }
        });

        tbClientes.setModel(tmCliente);
        jScrollPane1.setViewportView(tbClientes);

        jLabel1.setText("Endereço:");

        tfNome.setEditable(false);

        jLabel2.setText("Nome:");

        tfEndereco.setEditable(false);

        jLabel3.setText("Bairro:");

        tfBairro.setEditable(false);

        jLabel4.setText("Cidade:");

        jLabel5.setText("UF:");

        tfCidade.setEditable(false);

        tfUF.setEditable(false);

        jLabel6.setText("CEP:");

        tfCEP.setEditable(false);

        jLabel7.setText("Telefone:");

        tfTelefone.setEditable(false);

        btNovo.setText("Novo");
        btNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btNovoActionPerformed(evt);
            }
        });

        btAlterar.setText("Alterar");

        btCancelar.setText("Cancelar");

        btfechar.setText("Fechar");
eberson_oliveira

Olá Josenias,

Bom… como não sou um dos usuário conhecedores de netbeans (usei apenas para coisas bem específicas e nunca me deparei com este tipo de problema) não sei como você deve fazer para resolver esse problema dele mover o seu código de lugar. Acredito que isso deva ser configurável… vai saber…

Como sugestão ao problema, você poderia criar um outro método “configureComponents”, por exemplo, onde você pode adicionar esses códigos “não gerados automaticamente” e chamá-lo no construtor logo após de initComponents. Assim creio que o netbeans não deva reclamar ou “mudar” nada.

[]s

Criado 19 de fevereiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 4
Participantes 2