NullPointerException wird geworfen, bitte um Hilfe!

Hallo zusammen,
ich code zurzeit ein "Programm", in dem man Bälle mit den Pfeiltasten beschleunigen kann, und diese dann annähernd physikalisch gebremst werden, sobald sie nicht mehr beschleunigt werden.

Das Programm lief auch immer, ohne das etwas gethrowt wurde, jedoch wird manchmal die NullPointerException geworfen, und manchmal nicht. Ich weiß aber nicht, warum dies so ist. Die Kugeln werden aber trotzdem gezeichnet.

Die NullPointerException wird geworfen, sobald er versucht meine Ovale/Bälle zu zeichnen.

Bitte um Hilfe, da ich noch ein fortgeschrittener Neuling bin.

Hier der Konsoleneintrag:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at SpieleEntwicklungVersuch1.Frame$Screen.paintComponent(Frame.java:153)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JLayeredPane.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paintToOffscreen(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at java.awt.Window.paint(Unknown Source)
	at javax.swing.RepaintManager$3.run(Unknown Source)
	at javax.swing.RepaintManager$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.access$1100(Unknown Source)
	at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(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)

Klasse Screen mit der gezeichnet wird (interne Klasse, falls dies relevant sein sollte):
Java:
private class Screen extends JLabel {
		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			
			
			g.setColor(Color.RED);
			g.fillOval(player1.getBounding().x, player1.getBounding().y,
					player1.getBounding().width, player1.getBounding().height);

			g.setColor(Color.CYAN);
			
			g.fillOval(player2.getBounding().x, player2.getBounding().y,
					player2.getBounding().width, player2.getBounding().height);
		}
}

Durch getBounding().... bekomme ich jeweils die Größen, wie das Oval gezeichnet wird.

Danke im Voraus!:pueh:



EDIT: Habe das ganze nun in eine try-catch Anweisung gepackt, Problem besteht aber immernoch.
Java:
private class Screen extends JLabel {
		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			
			// hier wird gemalt
			
			// erstellt oval mit den groessen, welche beim erstellen des players
			// deklariert werden
			try {
				g.setColor(Color.RED);
				g.fillOval(player1.getBounding().x, player1.getBounding().y,
					player1.getBounding().width, player1.getBounding().height);

				g.setColor(Color.CYAN);
			
				g.fillOval(player2.getBounding().x, player2.getBounding().y,
					player2.getBounding().width, player2.getBounding().height);
			} catch(NullPointerException e) {
				System.out.println("Fehler beim Zeichnen.");
			}
			
		}
}
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 48276

Gast
Welche von den Zeilen ist denn Zeile 153? Da entsteht schließlich der Fehler (siehe Fehlermeldung). Irgendwo in paintComponent() kracht es.
 
Zuletzt bearbeitet von einem Moderator:
Ooh Entschuldigung, dies habe ich vergessen zu sagen.
Die Zeile 153 ist im JavaCode diese hier:
Java:
g.fillOval(player1.getBounding().x, player1.getBounding().y,
					player1.getBounding().width, player1.getBounding().height);
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 48276

Gast
Dann überprüfe mal, ob entweder player1, oder player1.getBounding() null zurückgiebt. g sollte nicht null sein, denn das wird in der Zeile vorher schon benutzt.
 
ok ich probier mal eben, bin in spätestens 5 minuten zurück!

komisch ist nur, dass er die exception manchmal wirft, und manchmal nicht.
 
Zuletzt bearbeitet:
Ich werde mal den Code meines Programms in gekürzter Version veröffentlichen.
Die getter liefern immer Werte !=0 raus.

Main:
Java:
public class Main {

	public static void main(String[] args) {
		
		//player wird erstellt
		Player1 player1 = new Player1(200, 200, 20, 0.17, 0.05);
		Player1 player2 = new Player1(300, 200, 20, 0.15, 0.05);  //letzten zwei: acceleration, brake
	
		
		Frame f = new Frame(player1, player2);
		
		
		int zeit = 0;
		
		while(true) {
			//berechnen
			player1.update(f.getUp(), f.getDown(), f.getLeft(), f.getRight());
			player2.update(f.getUp(), f.getDown(), f.getLeft(), f.getRight());
			
			f.repaintScreen();
			try {
				Thread.sleep(15);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}

Frame:
Java:
public class Frame extends JFrame {

	private Screen screen;

	private final Player1 player1;
	private final Player1 player2;

        public Frame(Player1 player1, Player1 player2) { 

		super("SpieleEntwicklungVersuch1");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(1500, 600);
		getContentPane().setBackground(Color.DARK_GRAY);
		setVisible(true);
		setResizable(false);
		setLayout(null);
		// Panel
		screen = new Screen();
		screen.setBounds(0, 0, 1000, 600);
		screen.setBackground(Color.BLACK);
		screen.setOpaque(true);
		add(screen);

		// KeyListener
		addKeyListener(new KeyHandler());

		//Anfang Komponenten
                .....
		// Ende Komponenten

		// Player
		this.player1 = player1;
		this.player2 = player2;

	}

         private class Screen extends JLabel {
		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			
			
			try {
				g.setColor(Color.RED);
				g.fillOval(player1.getBounding().x, player1.getBounding().y,
					player1.getBounding().width, player1.getBounding().height);

				g.setColor(Color.CYAN);
			
				g.fillOval(player2.getBounding().x, player2.getBounding().y,
					player2.getBounding().width, player2.getBounding().height);
			} catch(NullPointerException e) {
				System.out.println("Fehler beim Zeichnen.");
				System.out.println(e);
			}
			
		}
	}

Player:
Java:
public Player1(int x, int y, int size, double acceleration, double brake) {
		bounding = new Rectangle(x, y, size, size);
		
		
		f_posx = x;
		f_posy = y;
}


public void update(boolean up, boolean down, boolean left, boolean right) {  //booleans für keypressevents

		//berechnungen -> f_posx und f_posy werden geändert

		bounding.x = (int) f_posx;
		bounding.y = (int) f_posy;
		
		
		
}

public int getBounding_x() {
		return bounding.x;
	}

	public int getBounding_y() {
		return bounding.y;
	}





Ich hoffe die Übersicht bleibt bestehen, da ich viele Sachen rausgelassen habe.





Zu erwähnen wäre noch meine Vorgehensweise:
In der Endlosschleife wird immer berechnet und wieder repaintet.

Der Player ist ein Oval, das gezeichnet wird. Um dieses Oval wird diese Rectangle gelegt, um nachher Kollisionen zu berechnen. Bei jedem Berechnen in der Player-Klasse werden die x bzw y koordinaten des rectangles mit den x und y koordinaten des ovals gleichgesetzt.



Das Problem ist halt, dass er manchmal diese Exception wirft, aber manchmal auch nicht.
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 48276

Gast
Okay, also meine Vermutung ist, dass das Problem hierin besteht: Im Konstruktor von Frame rufst du add(screen) auf (Container (Java Platform SE 7 )). Dies könnte u.U. dazu führen, dass die Komponente neu gezeichnet werden möchte und ruft Screen.paintComponent() auf. Dieses wiederum möchte auf player1 aus der Frame-Klasse zugreifen, welches noch nicht zugewiesen wurde.

Weise mal im Konstruktor von Frame player1 und player2 zuerst zu, und dann erstelle die Komponenten.

Immer wenn du mit GUI arbeitest, hast du inherente Parallelität, welche dir manchmal ärger einhandeln kann.
 
ok ich danke dir so vielmals!
ich sag gleich bescheid obs klappt!



EDIT:

Und es klappt.! Ich danke dir wirklich von Herzen :)

Ich staune immer wieder, wie Menschen sich in diesen Codeschnipseln zurecht finden können, und dazu noch Lösungen finden, auf die ich selber niemals kommen würde!
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
S Array wird nicht übernommen NullPointerException Java Basics - Anfänger-Themen 6
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
D NullPointerException im Array Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
scratchy1 NullPointerException Java Basics - Anfänger-Themen 19
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
B Vererbung NullPointerException Java Basics - Anfänger-Themen 38
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5
N NullPointerException bei Konsolenausgabe Java Basics - Anfänger-Themen 5
J Klasse in Klasse; NullPointerException Java Basics - Anfänger-Themen 8
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
Q NullPointerException Java Basics - Anfänger-Themen 5
H NullPointerException Java Basics - Anfänger-Themen 5
T Threads MultiThreading NullPointerException Java Basics - Anfänger-Themen 7
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
B JRadioButton wechsel gibt NullPointerException Java Basics - Anfänger-Themen 2
L NullPointerException lösen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben