Ich bekomme immer wieder exceptions wenn ich meinen geschriebenen code testen will.z.B bei dieser Klasse
Hier ist meine MyImage Klasse
Meine GeometricImage Klasse
und Movable Klasse
Java:
public class RemoveAnimation1 extends AnimationPanel {
/* in dem moment wo zwei objekte sich be ruehren loeschen wir das kleinere
* beiden objekte aus der Liste der Spielobjekte
* Hierzu methode reactWhenTouching ueberschrieben werden
*
*/
public void reactWhenTouching(GameObject g1,GameObject g2){
if(g1.isLargerThan(g2)) gos.remove(g2);
else gos.remove(g1);
}
//Test
public static void main(String [] args){
MovablePanel p= new RemoveAnimation1();
p.gos.add(new MovableImage("13545876-illustration-von-nette-biene-honig-essen.jpg",0,0,1,1));
p.gos.add(new MovableImage("13545876-illustration-von-nette-biene-honig-essen.jpg",200,200,-1,-1));
ShowInFrame.show(p);
}
}
Java:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at JavaWillNurSpielen.GeometricImage.<init>(GeometricImage.java:16)
at JavaWillNurSpielen.MovableImage.<init>(MovableImage.java:32)
at JavaWillNurSpielen.RemoveAnimation1.main(RemoveAnimation1.java:17)
Hier ist meine MyImage Klasse
Java:
public class MyImage {
//zwei felder die den namen der datei und das schließlich geladene Bild speichern
private String name;
private Image img=null;//null sagt aus dass das objekt noch nicht vorhan den ist,Feldobjekt existiert aber Bildob jekt nicht
//KOnstruktor
public MyImage(String name){
this.name=name;
}
//get Mothode ermöglicht zugriff auf das Bildobjekt
public Image get(){
if(img==null)
img=Toolkit.getDefaultToolkit().createImage(getClass().getClassLoader().getResource(name));
return img;
}
}
Meine GeometricImage Klasse
Java:
ImageIcon icon;
/*Im Konstruktor wird über einen aufruf des konstruktors der der Oberklasse übergegebene eckpunkt gesetzt
* un dann das ImageIcon-Objekt aus der Ressourcenausgab e erzeugt
* Dieses Objekt kann dann nach der Hoehe und Breite befragt werden
* und die entsprechenden Werte für as GeometricObjekt gesetzt werden
*/
public GeometricImage(String fileName, double x, double y){
super(new Vertex(x,y));
icon = new ImageIcon (getClass().getClassLoader().getResource("13545876-illustration-von-nette-biene-honig-essen.jpg"));
init();
}
public GeometricImage(ImageIcon icon, double x, double y){
super(new Vertex(x,y));
this.icon = icon;
init();
}
void init(){
width=icon.getImage().getWidth(icon.getImageObserver());
height=icon.getImage().getHeight(icon.getImageObserver());
}
/*Methode zum zeichnen entspricht der von PaintableImage
* jetzt können wir das ImageIcon explizit nach seinem Imageob server fragn
*
*/
public void paintTo(java.awt.Graphics g){
icon.paintIcon(null, g, (int)pos.x, (int)pos.y);
}
//Test
public static void main(String[] args) {
GeometricImage g= new GeometricImage("13545876-illustration-von-nette-biene-honig-essen.jpg",10,10);
System.out.println(g.width);
System.out.println(g.height);
ShowInFrame.show(new PaintablePanel(g));
}
}
Java:
/*-Standardmäßig st dieser Wert auf 0 gesetzt damit Objekt sich nicht be wegt
*-Ein Konstruktor initialisert das Objekt
*/
public MovableImage(String name, double x, double y){
super(name,x,y);
}
//Im zwei weiteren Konstruktor kann das Feld DeltaPos auf einen bestimmten Wert gestezt werden
public MovableImage (String name, double x, double y,double dX,double dY){
super(name,x,y);
deltaPos=new Vertex(dX,dY);
}
public MovableImage(ImageIcon icon, double x, double y, double dX, double dY){
super(icon,x,y);
deltaPos= new Vertex(dX,dY);
}
/* Bewegungsschritt wird durchgeführt in dem der Bewegungsvektor
* deltaPos zur Position des Objektes hinzu addiert wird
*/
public void move(){
pos.addMod(deltaPos);
}
/*Bewgung wird umgedreht in dem die beiden KOmponenten
* des Bewegungsvekors ihr Vorzeichen wechseln.
* dieses kann mit einer Methode skalarMult der Klasse
* Vektor durchgeführt werden, in dem als Skala -1 ubergeben wird
*/
public void turn() {
deltaPos.skalarMultMod(-1);
}
//Bedingung dass ein objekt links eines anderen steht
public boolean isLeftOf(GameObject that) {
return this.getPos().x+this.getWidth()<that.getPos().y;
}
//ob ein objekt über ein anderes liegt
public boolean isAbove (GameObject that){
return this.getPos().y+this.getHeight()<that.getPos().y;
}
/*Schlißlich können die vier Fälle in denen sich zwei Objekte nicht be rühren einzeln geprüft werden
* Wenn keine der vier B edingungen zetrifft, müssen sich die objekte wohl berühren
*/
public boolean touches(GameObject that){
if(this.isLeftOf(that)) return false;
if(that.isLeftOf(this)) return false;
if(this.isAbove(that)) return false;
if(that.isAbove(this)) return false;
return true;
}
//testet ob das Objekt größer ist als ein zweites als Parameter uebergebenes Objekt
public boolean isLargerThan(GameObject that){
return getWidth()*getHeight()<that.getHeight()*that.getWidth();
}
}