Eclipse und bilder

PseudoReal

Grand Admiral Special
Mitglied seit
11.11.2001
Beiträge
2.003
Renomée
0
Standort
Frankfurt
hi habe in eclipse die ordnerstruktur bin und src,

habe die bilder sowohl in bin als auch in src, allerdings will mir das ausführende Programm die Bilder nicht laden, der Quellcode ist 100% richtig?! wo müssen die bilder hin, damit java/eclipse die erkennt ???
 
Kommt drauf an was du programmiert hast (Java Applet, Application, WebApp) oder sogar C++, PHP ?
Und falls z.B. in Java geschriebene Application: Über welchen Mechanismus lädst Du das Bild ? z.B. über den Classloader ?

Die Info, dass Du Eclipse benutzt und die beiden Ordner hast, ist leider nicht ausreichend um dir helfen zu können.

Vielleicht kannste ja den Teil des Codes mal hier posten damit die Leute hier was genaueres sagen können.
 
Code:
       String peteScr[]= { "right1.gif", "right2.gif", "right3.gif", "stop.gif",
                "blink.gif", "wave.gif"};
     Toolkit kit = Toolkit.getDefaultToolkit();
      
  for(int i=0; i<petePics.length; i++){
            petePics[i]=kit.getImage(peteScr[i]);
}



    public void paintComponent(Graphics comp){
        
        Graphics2D comp2D = (Graphics2D)comp;
        if(back != null){
            comp2D.drawImage(back,0,0,this);
        }
        comp2D.setColor(Color.black);
        comp2D.fillRect(0,30,450,30);
        if(petePics[current] != null)
                comp2D.drawImage(petePics[current],x,y,this);
    }
 
Ah ok damit kann man doch was anfangen ;).

Theoretisch müssten die Bilder im gleichen Verzeichnis liegen wie die kompilierten .class Dateien wenn du einfach nur den Namen des Bildes angibst.

Was aber sein kann, dass die Bilder nicht komplett geladen werden bevor sie angezeigt werden.
getImage() startet zwar den Ladevorgang, kehrt aber sofort wieder zurück und lädt das Bild im Hintergrund weiter.
Das Problem ist, wenn Du das Bild danach sofort anzeigst ist es eventuell überhaupt noch nicht geladen.

Für dieses Problem gibt es dann z.B. den MediaTracker, dem Du sagen kannst, dass das Programm solange warten soll, bis die Bilder geladen sind.
Eine andere und einfachere Möglichkeit ist ImageIcon von Swing zu verwenden. ( javax.swing.ImageIcon ). Die Klasse wartet auch solange bis das Bild geladen ist.

würde also so aussehen:

Image image = ImageIcon( pfadZumBild ).getImage();

Infos zu dem Thema gibts z.B. hier
http://scv.bu.edu/Doc/Java/tutorial/ui/drawing/usingImages.html

und die API von Swing (für ImageIcon) selbstverständlich bei SUN hier:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/ImageIcon.html
 
Eine Lösung mit dem MediaTracker würde so aussehen:

MediaTracker tracker = new Mediatracker( this );

tracker.addImage(image, 1);
// ... alle Bilder die geladen werden sollen hinzufügen

try {
tracker.waitForAll();
}catch (InterruptedException e) {
//... naja Exception handling - wobei das ist dem Fall wohl net so wichtig ist.
}
 
Danke vorerst :)

also ich schreibe ja die bilder in nen String array! welches dann dem image mitgeteilt wird

Code:
petePics[i]=kit.getImage(peteScr[i]);

ich habs so versucht, bringt aber auch nichts

Code:
for(int i = 0; i<petePics.length; i++)
{
    petePics[i]=kit.getImage(peteScr[i]);
    tracker.addImage(petePics[i],i);
}

aber auch das ImageIcon funzt net so richtig:


Code:
ImageIcon image1 = new ImageIcon("button1.gif");
JButton button1 = new JButton(image1);

JToolBar bar = new JToolBar(JToolBar.VERTICAL);
bar.add(button1);

und das bild war auch nicht sichtbar???!!!
vergess ich da irgendwo was?
 
Zuletzt bearbeitet:
Also was du noch versuchen könntest ist die Bilder über den Classloader zu laden.

Das Bild wird dann aus einem Verzeichnis, das im classpath liegt geladen.
Dabei musst du aber Orderstruktur usw. beachten.

Eventuell musst du noch ein "/" oder ein "/verzeichnis/" vor den Dateinamen hängen - je nachdem wo die Bilder liegen.

siehe auch der Thread hier:
http://forum.java.sun.com/thread.jsp?thread=529925&forum=31&message=2549710
oder der Artikel hier:
http://www.javaworld.com/javaworld/javaqa/2002-11/02-qa-1122-resources.html



String peteScr[]= { "right1.gif", "right2.gif", "right3.gif", "stop.gif",
"blink.gif", "wave.gif"};

Toolkit kit = Toolkit.getDefaultToolkit();

for(int i=0; i<petePics.length; i++){
URL url= this.getClass().getResource( peteScr );
Image image = null;

if( url != null) {
System.err.println("lade Bild " + url.toString() );
petePics=kit.getImage( url );
}
else {
System.err.println("Bild " + peteScr + " nicht gefunden");
}


}
 
Zurück
Oben Unten