Java.lang.NullPointerException

6 respostas
Guilherme_Albuquerqu

Olá, povo do GUJ, é o seguinte, como posso me “curar” de uma exceção, que acontece nesses casos:

Exception in thread “main” java.lang.NullPointerException

at pacman.Pac.(Pac.java:18):

at pacman.Janela.(Janela.java:16)

at pacman.Janela.main(Janela.java:26)
package pacman;

import javax.swing.JFrame;


public class Janela extends JFrame
{
    
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public Janela()
    {
        add(new Background());
        setTitle("PacMan");
        setDefaultCloseOperation(3);
        setSize(180, 242);
        setLocationRelativeTo(null);
        setResizable(false);
        setVisible(true);
    }

    public static void main(String[] args){
        new Janela();
    }
}

at pacman.Background.(Background.java:20):

package pacman;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class Background extends JPanel implements ActionListener {


/**
	 * 
	 */
	private static final long serialVersionUID = 1L;


private Image fundo;
private Pac pac = new Pac();
private Timer timer;

public Background(){
    
	setDoubleBuffered(true);
	setFocusable(true);
	addKeyListener(new KeyboardAdapter());
    ImageIcon referencia = new ImageIcon("Resources\\fundo.gif");
    fundo = referencia.getImage();
    
    
    timer = new Timer(5, this);
    timer.start();
 
}


    @Override
    public void paint(Graphics g){
	
	Graphics2D g2d = (Graphics2D) g;

	g2d.drawImage(fundo, 0, 0, null);
	
	
    g.dispose();
}   

@Override
public void actionPerformed(ActionEvent e) {
    pac.move();
    repaint();	
	
}

private class KeyboardAdapter extends KeyAdapter{

	@Override
	public void keyPressed(KeyEvent e) {
		
		pac.keyPressed(e);
	}
	
}


}

6 Respostas

Hebert_Coelho

basta não tentar acesar um objeto que está como null, assim você se cura. O.o

at pacman.Pac.(Pac.java:18).

O que tem nessa linha aí? O que tem aí que está null?

Margel_Douglas

Posta tua classe “Pac” ai … mas é como o colega disse acima, você esta acessando uma variável nula, não instanciada …

Pelo que eu vi, você esta fazendo um jogo estilo ‘Pacman’ … eu fiz um uma vez, foi muito legal :smiley:
se quiser conferir: http://www.adacomsistemas.com.br/extras/pacman/ ^^

Guilherme_Albuquerqu

Desculpa gente, tava com pressa para sair e, não postei, mas tá aqui:

package Pacman;

import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;

public class Pac{
Image image;
int x, dx;
int y, dy;
int h, w;

public Pac(){

 ImageIcon icon = new ImageIcon("Resources\\pacman.gif");

 this.w = image.getWidth(null);
 this.h = image.getHeight(null);
 
 image = icon.getImage();
 
  x = 10;
  y = 10;
  
  }

public void move(){
  x += dx;
  y += dy;
  
  if(x < 0){
    x = 0; 
  }
  if(x > 500){
    x = 500;
  }
  if(y < 0f){
    y = 0;
   }
  if(y > 500){   
    x = 500; 
  }
  }
public Image getImage(){
  return image;
  }
public int getX(){
  return x;
  }
public int getY(){
  return y; 
  }
public Rectangle getBounds(){
  return new Rectangle(h, w, 10, 10);
  }
   
   public void keyPressed(KeyEvent tecla) {
        int codigo = tecla.getKeyCode();


        if (codigo == KeyEvent.VK_UP) {
            dy = -2;

        }
        if (codigo == KeyEvent.VK_DOWN) {
            dy = 2;

        }

        if (codigo == KeyEvent.VK_LEFT) {
            dx = -2;

        }
        if (codigo == KeyEvent.VK_RIGHT) {
            dx = 2;

        }

    }
  }
A

Vc esta tentando acessar um metodo de um objeto que ainda nem existe.

this.w = image.getWidth(null);  
this.h = image.getHeight(null);

Crie um objeto pra essa variavel:

Image image;
CharlesAlves

Não li todo o post mas só complementando o que o Alancc falou seu construtor atualmente está assim

public Pac(){  
  
  ImageIcon icon = new ImageIcon("Resources\\pacman.gif");  
  
  this.w = image.getWidth(null);  
  this.h = image.getHeight(null);  
  
  image = icon.getImage();  
  
  x = 10;  
  y = 10;  
    
}

tenta coloca-lo assim e vê se fica certo

public Pac(){  
  
  ImageIcon icon = new ImageIcon("Resources\\pacman.gif");  
  
  image = icon.getImage();  
  
  this.w = image.getWidth(null);  
  this.h = image.getHeight(null);  
  
  x = 10;  
  y = 10;  
    
}

Desta forma será atribuída um objeto a imagem do qual pode ser obtido sua altura e largura

Guilherme_Albuquerqu

Valeu povo do GUJ, agora me curei, rsrsrs

Criado 2 de dezembro de 2012
Ultima resposta 3 de dez. de 2012
Respostas 6
Participantes 5