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:
Klasse Screen mit der gezeichnet wird (interne Klasse, falls dies relevant sein sollte):
Durch getBounding().... bekomme ich jeweils die Größen, wie das Oval gezeichnet wird.
Danke im Voraus!
ueh:
EDIT: Habe das ganze nun in eine try-catch Anweisung gepackt, Problem besteht aber immernoch.
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!
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: