NullPointerException Problem...

Hi Guys,

lets get straight to the point. I have this problem:

Exception in thread “Thread-2” java.lang.NullPointerException
at javax.swing.JComponent.getComponentGraphics(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at Display.Display.run(Display.java:39)
at java.lang.Thread.run(Unknown Source)

So… here is my code for one class:


package Display;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;

import javax.swing.JPanel;

public class Display extends JPanel implements Runnable {

	private Graphics g;
	private Thread gameThread;
	private boolean running = false;

	public Display() {
		gameThread = new Thread();
	}

	public void init() {
		running = true;
		gameThread = new Thread(this);
		gameThread.start();

	}

	public void update() {

	}

	public void draw(Graphics g){
		
	}

	@Override
	public void run() {
		while (running) {
			update();
			paint(g);
		}
	}

}

and the other class:

package fullscreen;

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;

import javax.swing.JFrame;

import Display.Display;

public class MainFrame extends JFrame {

	private static final long serialVersionUID = -485903859773002276L;
	private GraphicsDevice device;
	private boolean isFullScreen = false;
	private Display display = new Display();

	public MainFrame(GraphicsDevice device) {
		setTitle("SeemRang Fullscreen API");
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		this.device = device;

		add(display);
		display.init();
	}

	public void begin() {
		isFullScreen = device.isFullScreenSupported();
		setUndecorated(isFullScreen);
		setResizable(!isFullScreen);

		if (isFullScreen) {
			// Full-screen mode
			device.setFullScreenWindow(this);
		} else {
			// Windowed mode
			pack();
			setVisible(true);
		}
	}

	public static void main(String[] args) {
		GraphicsEnvironment env = GraphicsEnvironment
				.getLocalGraphicsEnvironment();
		GraphicsDevice[] devices = env.getScreenDevices();

		for (int i = 0; i < 1; i++) {
			MainFrame test = new MainFrame(devices[i]);
			test.begin();
		}
	}
}

and the last.

package fullscreen;

import java.awt.DisplayMode;

public class FullscreenInit {
	private DisplayMode modes;

	public FullscreenInit(DisplayMode modes) {
		this.modes = modes;
	}

	public DisplayMode getDisplayMode() {
		return modes;
	}

}

any solutions??? Any help will be appreciated.

Thnx,

LucaSeem ;D ;D ;D ;D ;D ;D ;D ;D

Use repaint, not paint.

First, as stated already, use repaint not paint. Second, just declaring a member doesn’t fill that member if it’s an object, you have to actually create or get an object to fill it.

Revised the class a little bit, removed the Graphics g object.
Added the repaint/paint methods ;D
Removed the double 'gameThread = new GameThread(this).
The NullPointerException was caused by your ‘Graphics g’ object being nulled, therefor when you called ‘paint(g);’ it throws the NullPointerException :-*


package Display;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;

import javax.swing.JPanel;

public class Display extends JPanel implements Runnable {

   private Thread gameThread;
   private boolean running = false;

   public Display() {
   }

   public void init() {
      running = true;
      gameThread = new Thread(this);
      gameThread.start();
   }

   public void update() {
      // Do Game Logic before you Render o,O
      draw();
   }

   public void paint(Graphics g) {
      super.paint(g);
   }

   public void draw() {
      repaint();
   }

   @Override
   public void run() {
      while (running) {
         update();
      }
   }

}

Thanx guys!!!