Problema ao adicionar objeto numa list

5 respostas
tiidle

Boa tarde pessoal. Como vão?
Bem, estou com o seguinte problema. Tenho um formulário para cadastro de produtos. Quando o usuáro clica no botão “OK”, os valores de todos os JTextFields vão para variáveis. Até aí, tudo certo. Depois disso eu chamo uma chasse chamada Cadastro passando essas variáveis e uma LinkedList. Essa classe cria um objto da classe Produto passando as variáveis com os valores que eu peguei dos JTexstFields e cria um novo Produto. Depois, a classe Cadastro adiciona esse objeto Produto na LinkedList. Mas aí dá erro ao adicionar… Alguem pode me ajudar??? Alguém sabe por que está dando erro?? Abaixo segue os códigos que eu fiz…:

Classe JanelaPrincipal, onde está o tratamento do evento do botão OK, reponsável por chamar o método da classe CadastraProduto:

JButton botaoOK = new JButton("OK");
	    botaoOK.addActionListener(
	       new ActionListener()
	       {
	    	   public void actionPerformed(ActionEvent event)
 	    	   {
 	    	      cod = Integer.parseInt(textCodProduto.getText());
 	    	      desc = textDescProduto.getText();
 	    	      vl = Float.parseFloat(textPrecoProduto.getText());
 	    	      forn = textFornProduto.getText();
 	    	      qtde = Integer.parseInt(textQtdeProdutoEstoque.getText());
 	    	      CadastroProdutos cadastro = new CadastroProdutos();
 	    	      cadastro.efetuaCadastro(list, cod, desc, vl, forn, qtde);
 	    	   }
	       });

Classe CadastraProduto:

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class CadastroProdutos {
	
	
	public void efetuaCadastro(LinkedList<Produtos> list, int cod, String desc, float vl, String forn, int qtde)
	{
		Produtos prod = new Produtos(cod, desc, vl, forn, qtde);
		list.add(prod);
	}
}

Classe Produto:

import java.util.LinkedList;

public class Produtos {
   
	private int cod_prod;
	private String desc_prod;
	private float vl_unit;
	private String forn;
	private int qtde_estoque;
	
	public Produtos(int cod, String desc, float vl, String forn, int qtde)
	{
		setCod_prod(cod);
		setDesc_prod(desc);
		setVl_unit(vl);
		setForn(forn);
		setQtde_estoque(qtde);
	}
	
	public int getCod_prod() {
		return cod_prod;
	}
	public void setCod_prod(int cod_prod) {
		this.cod_prod = cod_prod;
	}
	
	public String getDesc_prod() {
		return desc_prod;
	}
	public void setDesc_prod(String desc_prod) {
		this.desc_prod = desc_prod;
	}
	
	public float getVl_unit() {
		return vl_unit;
	}
	public void setVl_unit(float vl_unit) {
		this.vl_unit = vl_unit;
	}
	
	public String getForn() {
		return forn;
	}
	public void setForn(String forn) {
		this.forn = forn;
	}
	
	public int getQtde_estoque() {
		return qtde_estoque;
	}
	public void setQtde_estoque(int qtde_estoque) {
		this.qtde_estoque = qtde_estoque;
	}
	
	
}
ERRO

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

at CadastroProdutos.efetuaCadastro(CadastroProdutos.java:11)

at JanelaPrincipal$2.actionPerformed(JanelaPrincipal.java:124)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

5 Respostas

D

Oi tiidle,

olha, olhei seu código e … o erro é NullPointer, sua LinkedList está instanciada??? Me parece que não tente ver isso…

Um abraço

tiidle

Eu instanciei ela no início da classe JanelaPrincipal.

LinkedList<Produtos> list;

O que será que pode ser? Já tentei de tudo!!

T

tiidle:
Eu instanciei ela no início da classe JanelaPrincipal.

LinkedList<Produtos> list;

O que será que pode ser? Já tentei de tudo!!

Vamos explicar direitinho. Você não está programando em C++ (onde declarar uma variável é a mesma coisa que inicializá-la com o construtor default). Você está usando Java. Em Java, o que você escreveu:

LinkedList<Produtos> list;

é equivalente a isto aqui:

LinkedList<Produtos> list = null;

não ao que você está pensando:

LinkedList<Produtos> list = new LinkedList<Produtos>();

E a propósito, em 99% dos casos é melhor usar um ArrayList em vez de uma LinkedList. Não acho que o seu programa se encaixe no 1% em que é melhor usar um LinkedList. Ou seja:

import java.util.List; ... List<Produtos> list = new ArrayList<Produtos>();

M

list está como null se você declarou assim…

EDIT: Desisto, é a terceira mensagem em menos de uma semana que o thingol posta 1 minuto antes que eu e eu não vejo :? :roll:

tiidle

Pessoal, muito obrigado pela ajuda. Era isso mesmo que estava errado. Mas qual a diferença em usar ArrayList ao invés de LinkedList?

Criado 22 de setembro de 2008
Ultima resposta 22 de set. de 2008
Respostas 5
Participantes 4