# Image-Einbindung



## Schlagzeugbox (20. Jan 2011)

Hey,
ich habe angefangen, ein Spiel zu programmieren, das mit jeweils einzeln geschossenen Bildern arbeitet.
Mein Problem ist nun, dass nach etwa 30 Bildern das Applet keine neuen Bilder mehr aufrufen will und nur noch Bilder zeigt, die vorher schonmal aufgerufen worden sind. Jetzt habe ich versucht, die Bilder in einer eigenen Klasse aufrufen zu lassen, aber ich kenne keinen Möglichkeit, Images außerhalb einer Applet-Klasse einzubinden. Kann mir jemand bei meinen Problemen helfen?
Schonmal danke im vorraus ;D


----------



## L-ectron-X (20. Jan 2011)

Ohne Code und mehr Informationen wird das wohl nichts...


----------



## Schlagzeugbox (20. Jan 2011)

Hier der Code der alten Version mit dem Problem des Applets:
[JAVA=42]import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import java.awt.event.*;
public class Langeweile extends JApplet implements ActionListener
{
   Image a, b, c, d, e, f, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, ß, ä, ö, ü;
   Image aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, aß, aä, aö, aü, a1, a2, a3, a4, a5, a6, a7, a8;
   Button btnRechts, btnLinks, btnAufheben, btnBenutzen;
   int QuaderAufgehoben = 0, QuaderBenutzt = 0;
   int xPosBild1 = 1, xPosBild2 = 0, Bild = 1, Richtung = 1;
    public void init()
   {
       a = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2183.jpg");
       b = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2184.jpg");
       c = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2185.jpg");
       d = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2186.jpg");
       e = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2187.jpg");
       f = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2188.jpg");
       h = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2189.jpg");
       i = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2190.jpg");
       j = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2191.jpg");
       k = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2192.jpg");
       l = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2193.jpg");
       m = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2194.jpg");
       n = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2195.jpg");
       o = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2196.jpg");

       p = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2236.jpg");
       q = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2237.jpg");
       r = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2238.jpg");
       s = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2239.jpg");
       t = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2240.jpg");

       u = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2241.jpg");
       v = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2242.jpg");
       w = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2243.jpg");
       x = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2244.jpg");
       y = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2245.jpg");
       z = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2246.jpg");
       ß = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2247.jpg");
       ä = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2248.jpg");
       ö = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2249.jpg");
       ü = getImage (getDocumentBase(),"Bilder/Bild 1/IMG_2250.jpg");


       aa =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2197.jpg");
       ab =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2198.jpg");
       ac =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2199.jpg");
       ad =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2200.jpg");
       ae =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2201.jpg");
       af =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2202.jpg");
       ag =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2203.jpg");
       ah =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2204.jpg");
       ai =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2205.jpg");
       aj =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2206.jpg");
       ak =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2207.jpg");
       al =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2208.jpg");
       am =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2209.jpg");
       an =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2210.jpg");
       ao =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2211.jpg");
       ap =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2212.jpg");
       aq =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2213.jpg");
       ar =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2214.jpg");
       as =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2215.jpg");
       at =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2216.jpg");
       au =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2217.jpg");
       av =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2218.jpg");
       aw =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2219.jpg");
       ax =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2220.jpg");
       ay =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2221.jpg");
       az =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2222.jpg");
       aß =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2223.jpg");
       aä =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2224.jpg");
       aö =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2225.jpg");
       aü =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2226.jpg");
       a1 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2227.jpg");
       a2 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2229.jpg");
       a3 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2230.jpg");
       a4 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2231.jpg");
       a5 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2232.jpg");
       a6 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2233.jpg");
       a7 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2234.jpg");
       a8 =getImage (getDocumentBase(),"Bilder/Bild 2/IMG_2235.jpg");

       btnRechts = new Button("Rechts");
       getContentPane().setLayout(null);
       getContentPane().add(btnRechts);
       btnRechts.setBounds(50,50,100,50);
       btnRechts.addActionListener(this);

       btnLinks = new Button("Links");
       getContentPane().setLayout(null);
       getContentPane().add(btnLinks);
       btnLinks.setBounds(50,150,100,50);
       btnLinks.addActionListener(this);

       btnAufheben = new Button("Aufheben");
       getContentPane().setLayout(null);
       getContentPane().add(btnAufheben);
       btnAufheben.setBounds(50,250,100,50);
       btnAufheben.addActionListener(this);

       btnBenutzen = new Button("Benutzen");
       getContentPane().setLayout(null);
       getContentPane().add(btnBenutzen);
       btnBenutzen.setBounds(50,350,100,50);
       btnBenutzen.addActionListener(this);
   }
   public void paint(Graphics g)
   {
       g.setColor(Color.BLACK);
       g.fillRect(0,0,200,1000);
       g.setColor(Color.GREEN);
       g.drawString("Xpos ="+xPosBild1,0,30);
       g.drawString("Inventar",50,450);
       g.drawString("1",10,500);
       g.drawString("2",10,600);
       g.drawString("3",10,700);
       g.drawString("Hinweise",50,800);
       if ((QuaderAufgehoben < 3)&&(xPosBild2 == 7))
       {
           g.drawString("Hier kannst du den roten Quader ",10,820);
           g.drawString("aufheben. Drücke dazu zweimal",10,840);
           g.drawString("auf 'Aufheben'.",10,860);
       }
       else if (((QuaderAufgehoben == 3)&&(xPosBild1 == 2)&&(Richtung == 2))||((QuaderAufgehoben == 3)&&(xPosBild1 == 4)&&(Richtung == 1)))
       {
           g.drawString("Hier kannst du den roten Quader",10,820);
           g.drawString("benutzen. Drücke dazu x-mal",10,840);
           g.drawString("auf 'Benutzen'",10,860);
       }
       if (QuaderAufgehoben == 3)
       {
           g.setColor(Color.RED);
           g.fillRect(50,480,40,40);
           g.setColor(Color.GREEN);
           g.drawString("Roter Quader",100,500);
       }
       if ((Bild == 1)&&(QuaderBenutzt == 0))
       {
           if ((xPosBild1 == 1)&&(Richtung == 1))  g.drawImage(a,200,0,1000,1000,this);
           else if ((xPosBild1 == 2)&&(Richtung == 1)) g.drawImage(b,200,0,1000,1000,this);
           else if ((xPosBild1 == 3)&&(Richtung == 1)) g.drawImage(c,200,0,1000,1000,this);
           else if ((xPosBild1 == 4)&&(Richtung == 1)) g.drawImage(d,200,0,1000,1000,this);
           else if ((xPosBild1 == 5)&&(Richtung == 1)) g.drawImage(e,200,0,1000,1000,this);
           else if ((xPosBild1 == 6)&&(Richtung == 1)) g.drawImage(f,200,0,1000,1000,this);
           else if ((xPosBild1 == 7)&&(Richtung == 1)) g.drawImage(h,200,0,1000,1000,this);
           else if ((xPosBild1 == 7)&&(Richtung == 2)) g.drawImage(i,200,0,1000,1000,this);
           else if ((xPosBild1 == 6)&&(Richtung == 2)) g.drawImage(j,200,0,1000,1000,this);
           else if ((xPosBild1 == 5)&&(Richtung == 2)) g.drawImage(k,200,0,1000,1000,this);
           else if ((xPosBild1 == 4)&&(Richtung == 2)) g.drawImage(l,200,0,1000,1000,this);
           else if ((xPosBild1 == 3)&&(Richtung == 2)) g.drawImage(m,200,0,1000,1000,this);
           else if ((xPosBild1 == 2)&&(Richtung == 2)) g.drawImage(n,200,0,1000,1000,this);
           else if ((xPosBild1 == 1)&&(Richtung == 2)) g.drawImage(o,200,0,1000,1000,this);
       }
       else if ((Bild == 2)&&(QuaderAufgehoben == 0))
       {
           if ((xPosBild2 == 1)&&(Richtung == 1)) g.drawImage(aa,200,0,1000,1000,this);
           else if ((xPosBild2 == 2)&&(Richtung == 1)) g.drawImage(ab,200,0,1000,1000,this);
           else if ((xPosBild2 == 3)&&(Richtung == 1)) g.drawImage(ac,200,0,1000,1000,this);
           else if ((xPosBild2 == 4)&&(Richtung == 1)) g.drawImage(ad,200,0,1000,1000,this);
           else if ((xPosBild2 == 5)&&(Richtung == 1)) g.drawImage(ae,200,0,1000,1000,this);
           else if ((xPosBild2 == 6)&&(Richtung == 1)) g.drawImage(af,200,0,1000,1000,this);
           else if ((xPosBild2 == 7)&&(Richtung == 1)) g.drawImage(ag,200,0,1000,1000,this);
           else if ((xPosBild2 == 6)&&(Richtung == 2)) g.drawImage(a2,200,0,1000,1000,this);
           else if ((xPosBild2 == 5)&&(Richtung == 2)) g.drawImage(a3,200,0,1000,1000,this);
           else if ((xPosBild2 == 4)&&(Richtung == 2)) g.drawImage(a4,200,0,1000,1000,this);
           else if ((xPosBild2 == 3)&&(Richtung == 2)) g.drawImage(a6,200,0,1000,1000,this);
           else if ((xPosBild2 == 2)&&(Richtung == 2)) g.drawImage(a7,200,0,1000,1000,this);
           else if ((xPosBild2 == 1)&&(Richtung == 2)) g.drawImage(a8,200,0,1000,1000,this);
       }
       else if ((QuaderAufgehoben > 0)&&(QuaderAufgehoben < 3))
       {
           if (QuaderAufgehoben == 1) g.drawImage(ah,200,0,1000,1000,this);
           else if (QuaderAufgehoben == 2) g.drawImage(ai,200,0,1000,1000,this);
       }
       else if ((Bild == 2)&&(QuaderAufgehoben == 3))
       {
           if ((xPosBild2 == 1)&&(Richtung == 1)) g.drawImage(az,200,0,1000,1000,this);
           else if ((xPosBild2 == 2)&&(Richtung == 1)) g.drawImage(aß,200,0,1000,1000,this);
           else if ((xPosBild2 == 3)&&(Richtung == 1)) g.drawImage(aä,200,0,1000,1000,this);
           else if ((xPosBild2 == 4)&&(Richtung == 1)) g.drawImage(aö,200,0,1000,1000,this);
           else if ((xPosBild2 == 5)&&(Richtung == 1)) g.drawImage(aü,200,0,1000,1000,this);
           else if ((xPosBild2 == 6)&&(Richtung == 1)) g.drawImage(a1,200,0,1000,1000,this);
           else if ((xPosBild2 == 7)&&(Richtung == 1)) g.drawImage(aj,200,0,1000,1000,this);
           else if ((xPosBild2 == 8)&&(Richtung == 1)) g.drawImage(ak,200,0,1000,1000,this);
           else if ((xPosBild2 == 9)&&(Richtung == 1)) g.drawImage(al,200,0,1000,1000,this);
           else if ((xPosBild2 == 10)&&(Richtung == 1)) g.drawImage(am,200,0,1000,1000,this);
           else if ((xPosBild2 == 11)&&(Richtung == 1)) g.drawImage(an,200,0,1000,1000,this);
           else if ((xPosBild2 == 11)&&(Richtung == 2)) g.drawImage(ao,200,0,1000,1000,this);
           else if ((xPosBild2 == 10)&&(Richtung == 2)) g.drawImage(ap,200,0,1000,1000,this);
           else if ((xPosBild2 == 9)&&(Richtung == 2)) g.drawImage(aq,200,0,1000,1000,this);
           else if ((xPosBild2 == 8)&&(Richtung == 2)) g.drawImage(ar,200,0,1000,1000,this);
           else if ((xPosBild2 == 7)&&(Richtung == 2)) g.drawImage(as,200,0,1000,1000,this);
           else if ((xPosBild2 == 6)&&(Richtung == 2)) g.drawImage(at,200,0,1000,1000,this);
           else if ((xPosBild2 == 5)&&(Richtung == 2)) g.drawImage(au,200,0,1000,1000,this);
           else if ((xPosBild2 == 4)&&(Richtung == 2)) g.drawImage(av,200,0,1000,1000,this);
           else if ((xPosBild2 == 3)&&(Richtung == 2)) g.drawImage(aw,200,0,1000,1000,this);
           else if ((xPosBild2 == 2)&&(Richtung == 2)) g.drawImage(ax,200,0,1000,1000,this);
           else if ((xPosBild2 == 1)&&(Richtung == 2)) g.drawImage(ay,200,0,1000,1000,this);
        }
       else if ((QuaderBenutzt > 0)&&(QuaderBenutzt < 6))
       {
           if (QuaderBenutzt == 1) g.drawImage(p,200,0,1000,1000,this);
           else if (QuaderBenutzt == 2) g.drawImage(q,200,0,1000,1000,this);
           else if (QuaderBenutzt == 3) g.drawImage(r,200,0,1000,1000,this);
           else if (QuaderBenutzt == 4) g.drawImage(s,200,0,1000,1000,this);
           else if (QuaderBenutzt == 5) g.drawImage(t,200,0,1000,1000,this);
       }
       else if ((Bild == 1)&&(QuaderBenutzt == 6))
       {
           if ((xPosBild1 == 1)&&(Richtung == 2)) g.drawImage(u,200,0,1000,1000,this);
           else if ((xPosBild1 == 2)&&(Richtung == 1)) g.drawImage(v,200,0,1000,1000,this);
           else if ((xPosBild1 == 3)&&(Richtung == 1)) g.drawImage(w,200,0,1000,1000,this);
           else if ((xPosBild1 == 4)&&(Richtung == 1)) g.drawImage(x,200,0,1000,1000,this);
           else if ((xPosBild1 == 5)&&(Richtung == 1)) g.drawImage(y,200,0,1000,1000,this);
       }
       else if ((QuaderBenutzt > 6)&&(QuaderBenutzt < 11))
       {
           if (QuaderBenutzt == 7) g.drawImage(z,200,0,1000,1000,this);
           else if (QuaderBenutzt == 8) g.drawImage(ß,200,0,1000,1000,this);
           else if (QuaderBenutzt == 9) g.drawImage(ä,200,0,1000,1000,this);
           else if (QuaderBenutzt == 10) g.drawImage(ö,200,0,1000,1000,this);
       }
       else
       g.drawString("Bild noch nicht vorhanden",500,500);
   }
   public void actionPerformed(ActionEvent event)
   {
        if (event.getSource() == btnRechts) 
        {
              if ((Bild ==1)&&(QuaderBenutzt == 0))
              {
                  if (xPosBild1 < 7) xPosBild1++;
                  else if (xPosBild1 == 7) { xPosBild1 = 0; xPosBild2 = 1; Bild = 2; }
              }
              else if ((Bild == 1)&&(QuaderBenutzt == 6))
              {
                  if (xPosBild1 <6) xPosBild1++;
              }
              else if ((Bild == 2)&&(QuaderAufgehoben == 0))
              {
                if (xPosBild2 < 7) xPosBild2++;
            }
              else if ((Bild == 2)&&(QuaderAufgehoben == 3))
              {
                  if (xPosBild2 < 11) xPosBild2++;
                  else if (xPosBild2 == 11) {}
              }

              Richtung = 1;
              repaint();
        }
        else if (event.getSource() == btnLinks)
        {
            if ((Bild == 1)&&(QuaderBenutzt == 0))
            {
                if(xPosBild1 > 1) xPosBild1--;
            }
            else if ((Bild == 1)&&(QuaderBenutzt == 6))
            {
                if (xPosBild1 > 0 ) xPosBild1--;
            }
            else if (Bild == 2)
            {
                if (xPosBild2 >= 2) xPosBild2--;
                else if (xPosBild2 == 1) {xPosBild2 = 0; xPosBild1 = 7; Bild = 1;  }
            }
            Richtung = 2;
            repaint();
        }
        else if ((event.getSource() == btnAufheben)&&(xPosBild2 == 7))
        {   
            if (QuaderAufgehoben == 0)  QuaderAufgehoben = 1;
            else if (QuaderAufgehoben == 1) QuaderAufgehoben = 2;
            else if (QuaderAufgehoben == 2) QuaderAufgehoben = 3;
            repaint();
        }
        else if ((event.getSource() == btnBenutzen)&&(xPosBild1 == 2)&&(Richtung == 2)&&(QuaderAufgehoben == 3))
        {
            if (QuaderBenutzt < 7) QuaderBenutzt++;
            if (QuaderBenutzt == 6) {Bild = 1; xPosBild1 = 1; Richtung = 2;  }
            repaint();
        }
        else if ((event.getSource() == btnBenutzen)&&(xPosBild1 == 4)&&(Richtung == 1)&&(QuaderBenutzt >= 6))
        {
            if (QuaderBenutzt < 11) QuaderBenutzt++;
            if (QuaderBenutzt == 11) {Bild = 1; xPosBild1 = 5; Richtung = 1; QuaderBenutzt = 0;}
            repaint();
        }
        }    

   }[/code]


----------



## javawolf (20. Jan 2011)

Hi,

seit wann programmierst du in Java?
Von Arrays hast du wohl auch noch nicht gehört! 
Du nimmst für jedes Bild eine extra Variable? Ist mit der Zeit wohl ziemlich aufwendig
Leerzeichen bei Ordner sind auch nicht so toll....

Probier mal so
z.B


```
String bild;
Image[] image=new Image[anzahl_bilder];
for(int i=0; i<anzahl_bilder;i++){

           bild="Bilder/Bild1/IMG_" + Integer.toString(i) + ".jpg";
           image[i]=getImage (getDocumentBase(),bild);
}
```

Versuch mal deinen Code so aufzuräumen.....


----------



## L-ectron-X (21. Jan 2011)

javawolf hat gesagt.:


> Leerzeichen bei Ordner sind auch nicht so toll....



...sind aber zulässig.

Wenn du mit getImage() arbeitest, solltest du einen MediaTracker vorschalten, der das Laden der Bilder überwacht. Es kann sonst passieren, dass du nicht alle Bilder sehen kannst, weil größe Bilder länger zum Laden brauchen können.

Ich würde allerdings die Bilder in Applets nicht mit getImage() laden. Eine effizientere Lösung erreichst du mit Verwendung von 
	
	
	
	





```
javax.imageio.ImageIO
```
.

```
Image[] image = new Image[amount];

for(int i = 0; i < image.length; i++){
  try {
    image[i] = ImageIO.read(new URL(getCodeBase(), "Bilder/IMG_" + String.valueOf(i) + ".jpg"));
  }
  catch(IllegalArgumentException iae) {
    JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!");
  }
  catch(IOException ioe) {
    JOptionPane.showMessageDialog(this, "Fehler beim Einlesen einer Grafikdatei!");
  }
}
```
Schöner wäre es auch, wenn die Bilder nicht hart im Code stehen würden, sondern bspw. über Applet-Parameter eingelesen werden würden.
Falls dazu ein Beispiel gewünscht ist, kann ich das auch noch mal dazu schreiben.


----------



## Schlagzeugbox (22. Jan 2011)

Hey,
Ich habe jetzt erstmal gesehen, wie dumm ich mich angestellt habe ;D
Ich habe jetzt eine andere Methode zum abrufen der Bilder benutzt und nun ist das Problem weg


----------

