NullPointerException em Graphics no java

Olá, estou tendo alguns poblemas com o Graphics do AWT.
Esta NullPointer, esta causando “flicagem” no Jogo.

[code]
private BufferStrategy bs;
private void render() {
bs = display.canvas.getBufferStrategy();
if(bs == null){
display.canvas.createBufferStrategy(3);
return;
}
g = bs.getDrawGraphics();
//Clear Screen
g.clearRect(0, 0, display.getWidth(), display.getHeight());
//Draw Here!

	if(currentScene != null)
		currentScene.render(g);
	
	//End Drawing!
	bs.show();
	g.dispose();
}

[code]

Provavelmente no método render da classe Menu você está chamando o drawString passando uma referência null.

Negativo,
image
Esse null, é do ImageObserver, que não tem praticamente nada a ver…

Não poste imagens, poste o código puro e formate com o botão “</>” do fórum.

Seu StackTrace diz que o NullPointerException está acontecendo na linha 42 do arquivo Menu.java.
Precisamente dentro do método render e a exceção acontece ao chamar o método drawString.

Das duas uma:

  • Você não recompilou seu código e está executando .class obsoleto;
  • Você postou no fórum um código diferente do código que realmente implementou.

Não, a relalidade o codigo que eu postei currentScene.render(g); é na minha Classe principal, a classe Game,
o codigo que eu postei depois, é o metodo que a classe principal chama.
E Sim, eu ja recompilei porém o poblema continua.
em outro projeto porém com o mesmo codigo, em outro workspace o poblema não apareceu.

O StackTrace está claro, o NPE acontece no método render da classe Menu.

Outra coisa, vi que há várias exceções sendo lançadas por diferentes Threads.

Porque você tem várias Threads desenhando no mesmo Graphics?

Tira aquela chamada ao dispose() do Graphics, provavelmente alguma dessas suas Threads está tentando desenhar depois de tu ter feito o dispose.

Da uma revisada nesse teu jogo.

Eu costumo ter só duas Threads quando faço jogos:

  • a thread principal do programa
  • a thread do game loop
1 curtida

Narealidade, o jogo possui apenas uma thread.
e eu descontinuei o projeto.

Percebi que a ideia não ia dar certo.
e quando eu removi o dispose o Stacktrace aparecia da mesma forma…

Obrigado por ajudar.

O StackTrace que você postou tinha exceções na Thread-28, Thread-31 e Thread-32.
:wink:

Eu olhei hoje o projeto, e descobri o porque,
Acontece, que no metodo “run” eu acabei colocando para ele chamar o metodo start(), iniciando outra thread. esse é o motivo da exceção…

1 curtida