DUvida no codigo

5 respostas
W

Tenho esse erro no meu programa e não sei mais o que fazer ta duro.
alguém pode dar uma mão.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at calculo.Event.actionPerformed(Event.java:46) 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:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4460) 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)
import java.awt.event.*;

public class Event implements ActionListener ,ItemListener {
    CalculoView gui;
    Thread running;
    String Component;
    String Diametro ;
    String Quantidade;
    int numero= 1;
    Tabela[] dados = new Tabela[10];

    public Event(CalculoView in) {
        gui = in;

    }
    
    public void itemStateChanged(ItemEvent item){
        Object wich = new Object();

        wich = item.getItem();
        Object name= item.getSource();
        if(gui.Comp.equals(name)){
        Component = wich.toString();
        }
        if(gui.Dia.equals(name)){
        Diametro = wich.toString();
        }
        if(gui.Quant.equals(name)){
        Quantidade = wich.toString();
        }
    }

    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
        if(command.equals("Adicionar")){ 
            dados[1].Componente= Component;
            dados[1].Diametro = Diametro;
            dados[1].Quantidade = Integer.parseInt(Quantidade);
            gui.campo.append(""+numero+"-  Foram Adicionados: "+Component +" de "+Diametro+ " - Quantidade: "+Quantidade+"\n");
            gui.campo.append(""+numero+"-  Foram Adicionados: "+dados[numero].Componente +" de "+dados[numero].Diametro+ " - Quantidade: "+dados[numero].Quantidade+"\n");
             numero++;
            
        }
        if(command.equals("Calcular")){
            Calcular();
        }


    }


     public void Adicionar() {
        dados[1].Componente= Component;
        dados[1].Diametro = Diametro;
        dados[1].Quantidade = Integer.parseInt(Quantidade);
        gui.campo.append(""+numero+"-  Foram Adicionados: "+Component +" de "+Diametro+ " - Quantidade: "+Quantidade+"\n");
        gui.campo.append(""+numero+"-  Foram Adicionados: "+dados[numero].Componente +" de "+dados[numero].Diametro+ " - Quantidade: "+dados[numero].Quantidade+"\n");
        numero++;


    }

    private void Calcular() {

        throw new UnsupportedOperationException("Not yet implemented");
    }

}

class Tabela {
String Componente ;
String Diametro;
Integer Quantidade ;

}

5 Respostas

laudenpower

O método calcular está lançando uma exceção quando é chamado. Procure tirar essa exceção para ver se muda o erro pelo menos, álias procure dar mais detalhes do está acontecendo… Provavelmente nesse código também você deve estar tentando acessar algum objeto que não possui referência.

panthovillas

algum object q vc esta utilizando no actionPerformed esta nulo… tente debugar.

W

o erro acontece quando ele usa a classe tabela se tirar funciona perfeitamente eu estava tentando armazenar os dados em forma de um vetor de “tipo” com as tres variaveis igual se faz em C, sou novo em java acho que deve ter algo errado no jeito que estou tentando fazer o “tipo”.

V

Voce sempre esta adicionando no indice 1, nunca seu array vai ser populado e sua variavel “numero” aumenta mesmo assim.
Inicialize a variavel numero = 0;

if(command.equals("Adicionar")){   
             dados[numero].Componente= Component;  
             dados[numero].Diametro = Diametro;  
             dados[numero].Quantidade = Integer.parseInt(Quantidade);  
             gui.campo.append(""+numero+"-  Foram Adicionados: "+Component +" de "+Diametro+ " - Quantidade: "+Quantidade+"\n");  
             gui.campo.append(""+numero+"-  Foram Adicionados: "+dados[numero].Componente +" de "+dados[numero].Diametro+ " - Quantidade: "+dados[numero].Quantidade+"\n");  
              numero++;  
         }

Sempre coloque nome de variavel em minusculo.

laudenpower

vdb:
Voce sempre esta adicionando no indice 1, nunca seu array vai ser populado e sua variavel “numero” aumenta mesmo assim.
Inicialize a variavel numero = 0;

if(command.equals("Adicionar")){   
             dados[numero].Componente= Component;  
             dados[numero].Diametro = Diametro;  
             dados[numero].Quantidade = Integer.parseInt(Quantidade);  
             gui.campo.append(""+numero+"-  Foram Adicionados: "+Component +" de "+Diametro+ " - Quantidade: "+Quantidade+"\n");  
             gui.campo.append(""+numero+"-  Foram Adicionados: "+dados[numero].Componente +" de "+dados[numero].Diametro+ " - Quantidade: "+dados[numero].Quantidade+"\n");  
              numero++;  
         }

Sempre coloque nome de variavel em minusculo.

Se quiser seguir a convenção o nome de variavel é sempre minusculo, sendo que quando o nome é composto deve assumir a seguinte forma: nomeComposto, note que nome é minusculo e composto tem a primeira silaba em maiusculo, sendo da mesma forma quando são 3 nomes por exemplo.

Variável em letra maiuscula descrevem constantes de acordo com a convenção.

EDITADO: Desconsidere esse post, não li direito e achei que vc tinha dito maiusculo. Desculpe.

Criado 7 de julho de 2009
Ultima resposta 7 de jul. de 2009
Respostas 5
Participantes 4