Kann mir vielleicht schnell einer sagen ob meine Vermutung richtig ist, warum g2 hier null liefert?
Ich vermute weil der panel / dessen Graphics Objekt noch nicht vollständig initialisiert ist,
und ich versuchen mit diesem direkt zu zeichnen.
Die betreffende stelle ist markiert, egal wie ich auch versuche an das vollständig initialisierte Objekt zu gelangen fliegt hier immer eine NPE.
Witzigerweise beim debuggen nicht o0.....
Das hier kommt beim debuggin heraus :
Was mich hier irritiert ist das laut Belegung hier ein Graphics2D Objekt geliefert wird, das ist hier aber nicht der Fall ......
Keine Exception !
und das hier wenn ich es normal ausführe :
also fliegt quasi hier die NPE
Ich vermute weil der panel / dessen Graphics Objekt noch nicht vollständig initialisiert ist,
und ich versuchen mit diesem direkt zu zeichnen.
Die betreffende stelle ist markiert, egal wie ich auch versuche an das vollständig initialisierte Objekt zu gelangen fliegt hier immer eine NPE.
Witzigerweise beim debuggen nicht o0.....
Java:
public class GamePanel extends JPanel implements Runnable, KeyListener{
private static final long serialVersionUID = 1L;
//properties
static int WIDHT = 320;
static int HEIGHT = 240;
static int SCALE = 2;
//image
BufferedImage image;
Graphics g;
//gameloop
Thread gameLoop;
boolean running;
static int FPS = 60;
static int targetTime = 1000 / FPS;
public GamePanel() {
setProperties();
initialise();
startGameLoop();
}
private void setProperties(){
setPreferredSize(new Dimension(WIDHT *SCALE, HEIGHT * SCALE));
setFocusable(true);
requestFocus();
}
private void initialise(){
image = new BufferedImage(WIDHT, HEIGHT, BufferedImage.TYPE_INT_RGB);
g = image.getGraphics();
running = true;
}
private void startGameLoop(){
if(gameLoop == null){
gameLoop = new Thread(this);
gameLoop.start();
}
}
private void update() {}
private void render() {}
private void draw() {
Graphics g2 = getGraphics(); // <-- bleibt null / ggf. weil panel noch nicht komplett initialisiert ?!
g2.drawImage(image, 0, 0, WIDHT, HEIGHT, null);
g2.dispose();
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void run() {
update();
render();
draw();
try {
Thread.sleep(1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
Das hier kommt beim debuggin heraus :
Was mich hier irritiert ist das laut Belegung hier ein Graphics2D Objekt geliefert wird, das ist hier aber nicht der Fall ......
Keine Exception !
und das hier wenn ich es normal ausführe :
Code:
Exception in thread "Thread-1" java.lang.NullPointerException
at dev.eflow.game.main.GamePanel.draw(GamePanel.java:67)
at dev.eflow.game.main.GamePanel.run(GamePanel.java:85)
at java.lang.Thread.run(Unknown Source)
also fliegt quasi hier die NPE
Java:
g2.drawImage(image, 0, 0, WIDHT, HEIGHT, null);
// g2 ist hier angeblich null, aber warum dann beim debugging nicht ?
Zuletzt bearbeitet: