BlueJ Ein Bild durch ein anderes Bild ersetzen

D

Das_Tobi

Gast
Hallo,
Ich mache gerade ein kleines Projekt für die Schule. Ich habe mir vorgenommen, ein Ladebild 3mal hin- und herschweben zu lassen und es anschließend durch ein Fehlermeldungsbild zu ersetzen. Ich habe es bereits mit einer Forschleife und mit der If-Abfrage versucht, leider jedoch ohne ein nennenswertes Ergebnis.

Mein Quellcode für die Fensterklasse:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;


public class Fenster extends JFrame
{
    Man man = new Man ("ladebalken.gif",0,0);
    

    public Fenster()
    {
        this.add(man);
        this.setTitle("Laden+Fehlermeldung");
        this.setSize(400,400);
        this.show();
        this.addWindowListener(new FensterMitXSchliessen());
        
        for(int P= 0; P<=3; P++)
       {
        for (int x = 60; x <= 200; x++)
        {
            man.setBounds(x,80);
            delay(10);
            man.repaint();
        }
        for (int x = 200; x >= 60; x--)
        {
            man.setBounds(x,80);
            delay(10);
            man.repaint();
        }
      }
        for (int x = 60; x <= 150; x++)
        {
            man.setBounds(x,80);
            delay(10);
            man.repaint();
        
    }
}

   
    
    public void delay(int ms)
    {
        try
        {
            Thread.currentThread().sleep(10);
        }
        catch (InterruptedException e)
        {}
    }
    
    public static void main (String[] args)
    {
        Fenster f = new Fenster();
    }
}

Mein Quellcode für die Man-Klasse:
Java:
import java.awt.*;
import javax.swing.*;


public class Man extends JComponent
{
    private Image image;
    int xPos, yPos;
    
    public Man(String imagePath, int x, int y)
    {
        image = loadImage (imagePath);
        xPos = x;
        yPos = y;
        setBackground(Color.blue);
    }
    
    public void paint (Graphics g)
    {
        Image Display = Toolkit.getDefaultToolkit().getImage("Display.jpg");
        g.drawImage(Display,20,0,this);
        g.drawImage(image, xPos, yPos, null);
    }
    
    public void setBounds(int x, int y)
    {
        xPos = x;
        yPos = y;
    }
    
    public Image loadImage (String imagePath)
    {
        Image image = Toolkit.getDefaultToolkit().getImage(imagePath);
        return image;
    }
}

Ich hoffe ihr könnt mir helfen es zu schaffen, dass das Ladebild nach 3 mal hin- und herschwingen, durch das Fehlermeldungsbild ersetzt wird.

Mit Freundlichen Grüßen :)
 

chalkbag

Bekanntes Mitglied
Wo genau liegt das Problem? Das mit dem "Schweben" funktioniert? (ich glaub hier sitzt die Klammer vor der äußeren For-Schleife auch falsch?)
Ob du vom Frame mit this.remove(man) das Element entfernen kannst, musst du ausprobieren.
Falls nicht, verwende ein Panel in welches du den Man steckst. Hat der Man genug gewachelt, erstellst du einfach ein neuen Man (mit dem gewünschten Bild) und ersetzt dieses im Panel bzw. im Frame.

Aber wie gesagt, spezifiziere bitte "funktioniert nicht".
 
D

Das_Tobi

Gast
Das Schweben funktioniert ja. Das Problem ist, dass sobald das Ladebild 3mal hin- und hergelaufen ist, das Ladebild durch ein Fehlermeldungsbild ersetzt werden soll. Das soll dann einfach da stehen und braucht sich nicht zu bewegen.

MFG :)
 

Andi_CH

Top Contributor
Hm - ich sehe nur lange Zeit ein graues Fenster und sonst gar nichts ... ausserdem was ist FensterMitXSchliessen - hab ich einfach auskommentiert. Glaube kaum, dass es das braucht.

Aber was ich mich frage woher hast du die Zeile

Java:
Thread.currentThread().sleep(10);

die sieht man auch an anderer Stelle immer wieder und Eclipse meckert von wegen static Method.
Schreib doch einfach
Java:
Thread.sleep(10);
 

Neue Themen


Oben