Erro ao adicionar item na lista

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);
    }

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.

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.

Vdd, erro meu

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.