Grüße liebe JavaFreunde!
Ohne lange umschweife zeige ich zunächst mal meine CodeBauklötze...
Hauptklasse:
ObjektKlasse für die Bilder
So. Soweit sollte der Code verständlich sein.
Zum komischen Teil:
Es funktioniert ja! Ich sehe ein JPamel-Fenster mit dem Hintergrundbild.
Ich bekomme nur eine hübsche NullPointer-Exception an der markieren Stelle in der Hauptklasse.
Wo habe ich was übersehen??? Die NullPointerException an DIESER Stelle, kann doch nur bedeuten, dass die PaintMethode schonmal aufgerufen wird, bevor das Objekt initialisiert wurde...
lg
k3ltis
Ohne lange umschweife zeige ich zunächst mal meine CodeBauklötze...
Hauptklasse:
Java:
//DAS IST MEINE HAUPTKLASSE
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class MainMenu extends JPanel implements Runnable, ActionListener, KeyListener, MouseListener{
JFrame frame;
long delta = 0;
long last = 0;
long fps = 0;
Bilder hintergrund;
public static void main(String [] args){
new MainMenu(800, 600);
}
public MainMenu(int w, int h){
this.setPreferredSize(new Dimension(w, h));
frame = new JFrame("MEIN SPIEL");
frame.setLocation(100, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setVisible(true);
doInitializations();
Thread th = new Thread(this);
th.start();
}
private void doInitializations() {
last = System.nanoTime();
hintergrund = new Bilder("C:/Users/k3ltis/workspace/GUI-Experimente/bin/pics/background.jpg");
}
@Override
public void run() {
while(frame.isVisible()){
computeDelta();
repaint();
try{
Thread.sleep(10);
}catch(InterruptedException e) {}
}
}
private void computeDelta() {
delta = System.nanoTime() - last;
last = System.nanoTime();
fps = ((long) 1e9)/delta;
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
hintergrund.zeichne(g); //<------NULLPOINTER EXCEPTION-------------------------------<
}
}
ObjektKlasse für die Bilder
Java:
//DAS IST DIE OBJEKTKLASSE FÜR DIE BILDER
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Bilder {
protected BufferedImage bild;
//Konstruktor
public Bilder(String dateiname){
this.bild = null;
try {
this.bild = ImageIO.read(new File(dateiname));
System.out.println("Bild geladen");
} catch (IOException e) {
System.out.println("Bild nicht geladen");
}
}
// public BufferedImage getBild(){
// return this.bild;
// }
public void zeichne(Graphics g){
g.drawImage(bild,0,0,null);
}
}
So. Soweit sollte der Code verständlich sein.
Zum komischen Teil:
Es funktioniert ja! Ich sehe ein JPamel-Fenster mit dem Hintergrundbild.
Ich bekomme nur eine hübsche NullPointer-Exception an der markieren Stelle in der Hauptklasse.
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MainMenu.paintComponent(MainMenu.java:141)
Wo habe ich was übersehen??? Die NullPointerException an DIESER Stelle, kann doch nur bedeuten, dass die PaintMethode schonmal aufgerufen wird, bevor das Objekt initialisiert wurde...
lg
k3ltis
Zuletzt bearbeitet von einem Moderator: