Erro ao adicionar item na lista

4 respostas
java
P

Amigos, boa tarde. Venho pedir a ajuda de todos com o erro estranho que vem ocorrendo quando seleciono o botão OK de após informar os valores do item para coloca-lo em uma lista.

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

at com.controle.ItemCompraControle.incluirItemNaLista(ItemCompraControle.java:58)

at com.gui.AdicionarItemGui.adicionarItem(AdicionarItemGui.java:161)

at com.gui.AdicionarItemGui.obtnOkActionPerformed(AdicionarItemGui.java:127)

at com.gui.AdicionarItemGui.access$000(AdicionarItemGui.java:19)

at com.gui.AdicionarItemGui$1.actionPerformed(AdicionarItemGui.java:56)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

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

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

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

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

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

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

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

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

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

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

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

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

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

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)

at java.awt.EventQueue.access$400(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:697)

at java.awt.EventQueue$3.run(EventQueue.java:691)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:719)

at java.awt.EventQueue$4.run(EventQueue.java:717)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

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

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

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

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

at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)

at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)

at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)

at java.security.AccessController.doPrivileged(Native Method)

at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)

at java.awt.Dialog.show(Dialog.java:1084)

at java.awt.Component.show(Component.java:1656)

at java.awt.Component.setVisible(Component.java:1608)

at java.awt.Window.setVisible(Window.java:1014)

at java.awt.Dialog.setVisible(Dialog.java:1005)

at com.controle.ItemCompraControle.botaoAdicionarItem(ItemCompraControle.java:65)

at com.gui.NovaCompraGui.obtnAdicionarActionPerformed(NovaCompraGui.java:206)

at com.gui.NovaCompraGui.access$000(NovaCompraGui.java:20)

at com.gui.NovaCompraGui$1.actionPerformed(NovaCompraGui.java:70)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

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

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

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

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

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

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

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

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

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

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

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

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

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

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)

at java.awt.EventQueue.access$400(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:697)

at java.awt.EventQueue$3.run(EventQueue.java:691)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:719)

at java.awt.EventQueue$4.run(EventQueue.java:717)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

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

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

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

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

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

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

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

O erro ocorre na linha listaItemCompra.add(itemCompra);

public void incluirItemNaLista(AdicionarItemGui adicionarItemGui,ItemCompra itemCompra){
        if (adicionarItemValidador.naoPodeIncluir(itemCompra)) {
            adicionarItemGui.informaErroDeValidacao(adicionarItemGui,adicionarItemValidador.getMensagem());
            return;
        }
        List<ItemCompra> listaItemCompra = new ArrayList<ItemCompra>();
        Compra compra = new Compra();
        listaItemCompra = compra.getItensCompra();
        listaItemCompra.add(itemCompra);
        compra.setItensCompra(listaItemCompra);
    }

4 Respostas

4

Eu identifiquei 2 problemas, um q vc esta enfrentando e outro q só vou sitar pq n faz sentido seu código por hora:

1º Vc instancia o objeto compra, criando uma nova, e faz um get vazio.

Compra compra = new Compra(); // aqui vc esta criando uma nova compra
listaItemCompra = compra.getItensCompra(); // logo o compra.getItens esta vazio
listaItemCompra.add(itemCompra);

2º Problema do Null. Não esta criado o Objeto Item Compra. Ela deve estar seguido por um new, identificando q vc estará criando um novo, só assim vc poderá adicionar a lista.
Para maior detalhe, mostre seu código de iniciação do objeto itemCompra, porém antes, de uma olhada por onde este objeto esta percorrendo.

P

O segundo “problema” não é um problema. ItemCompra é parâmetro logo não há necessidade de nenhum new. Além de que é perfeitamente válido adicionar um null a uma lista.

O problema está no que identificaste como primeiro problema. O compra.getItensCompra não devolve vazio mas sim null e aí a lista fica null. Ao fazer add sobre uma lista null dá o erro.

4

Vdd, erro meu

P

Valeu pessoal. corrigi de primeiro a compra, passando seus dados para os itens e em seguida preenchendo os itens.

Era exatamente pq alguns campos do item com chaves não podiam ser vazios rsrsrs
Valeu. Todas dicas são validas.

Obrigado pelo valioso tempo de vocês.

Criado 3 de novembro de 2016
Ultima resposta 7 de nov. de 2016
Respostas 4
Participantes 3