# Bilder in zeitlichen Abstand zeichnen



## Mr_Lala (11. Mrz 2011)

Hey Hey 
Also ich hab da mal ne Frage oder ein Problem bei meinem Java Programm.
Es sieht so aus: Ich würde gerne Bilder zeichnen lassen nachdem ich auf einen Button geklickt habe.
Ausserdem sollten diese Bilder dann nicht alle gleich gezeichnet werden sondern nach einer bestimmten Zeit.
Nach z.b. 4s soll das erste Bilde gezeichnet werden. Nach weiteren 4s das nächste usw. Ich würde gerne drei Bilder zeichnen lassen
und diese Bilder sollten dann wie gesagt in unterschiedlichen Abständen angezeigt werden aber nur einmal! Nicht das die sich irgendwann wieder zeichnen.
Wäre echt schön wenn jemand wissen würde wie ich so ein Programm schreiben kann weil ich komm einfach nicht weiter.
Danke schonmal im vorraus


----------



## Andi_CH (11. Mrz 2011)

```
Thread.sleep(4000)
zeichneBild1();
Thread.sleep(4000)
zeichneBild2();
Thread.sleep(4000)
zeichneBild3();
Thread.sleep(4000)
zeichneBild4();
```


----------



## Mr_Lala (11. Mrz 2011)

Soll ich neue Methoden schreiben die dann heissen: zeichneBild1()?? 
Oder kann ich es so in der paint() schreiben:

Thread.sleep(4000)
g.drawImage(...);
Thread.sleep(4000)
g.drawImage(...);
...

??


----------



## Andi_CH (11. Mrz 2011)

Was ist denn g???

Wie du es machst ist doch egal!

Liefere erst mal etwas Code (In JAVA tags bitte!) der wenigstens ein Bild irgendwohin zeichnet um mich zu überzeugen, dass du überhaupt schon irgend etwas hast.


----------



## Mr_Lala (11. Mrz 2011)

```
import java.awt.*;
import java.awt.event.*;






public class Kasse extends Frame  {

	
	Image img1 = Toolkit.getDefaultToolkit().getImage("Kasse.gif");
	Image img2 = Toolkit.getDefaultToolkit().getImage("apfel.png");
	Image img3 = Toolkit.getDefaultToolkit().getImage("kunde2.gif");
	Image img4 = Toolkit.getDefaultToolkit().getImage("kunde2.gif");
	Image img5 = Toolkit.getDefaultToolkit().getImage("kunde2.gif");
	Image img6 = Toolkit.getDefaultToolkit().getImage("nutella.png");
	Image img7 = Toolkit.getDefaultToolkit().getImage("cola.png");
	

	
	
	private int x3 = 250, x2 = 180, x1 = 110;
	private int y3 = 375, y2 = 370, y1 = 370;
	private int i = 200, j = 0;
	
	
		
	private Image dbImage;
	private Graphics dbGraphics;
	private Button bt;
	
	
	private MyWindowListener w = new MyWindowListener();
	private MyMouseMotionListener mml = new MyMouseMotionListener();

	
	
	
	
	
	
	public Kasse() {
		super("Warteschlange");
		this.setBackground(Color.yellow);
		this.setSize(800, 800);
		this.setLayout(null);
		this.setLocation(300, 150);
		this.bt = new Button("Start");
		this.bt.setBounds(50, 650, 80, 80);
		this.add(bt);
		this.setVisible(true);
			
		this.addWindowListener(w);
		this.addMouseMotionListener(mml);
		

	}
	

			
	

	
	
	

	public void paint(Graphics g)// Zeichnet Objekte
	{
       
		g.setColor(Color.lightGray);
		g.fillRect(70, 350, 650, 100);
		g.setColor(Color.black);
		g.fillRect(90, 370, 350, 60);
		g.setColor(Color.black);
		g.fillRect(600, 370, 100, 60);
		g.fillRect(50, 250, 10, 80);
		g.drawString("Punkte: " + j, 500, 100);
		g.drawString("Zeit: " + i, 100, 100);			
		g.drawImage(img1, 600, 480, 100, 100, this);
		g.drawImage(img2, x1, y1, 50, 50, this);
		g.drawImage(img6, x2, y2, 60, 60, this);
		g.drawImage(img7, x3, y3, 55, 55, this);		
		g.drawImage(img3, 320, 190, 150, 150, this);		
		g.drawImage(img4, 170, 190, 150, 150, this);		
		g.drawImage(img5, 20, 190, 150, 150, this);
	}


	public void update(Graphics g) {
		// Double-Buffer initialisieren
		if (dbImage == null) {
			dbImage = createImage(this.getSize().width, this.getSize().height);
			dbGraphics = dbImage.getGraphics();
		}
		// Hintergrund löschen
		dbGraphics.setColor(getBackground());
		dbGraphics.fillRect(0, 0, this.getSize().width, this.getSize().height);
		// Vordergrund zeichnen
		dbGraphics.setColor(getForeground());
		paint(dbGraphics);
		// Offscreen anzeigen
		g.drawImage(dbImage, 0, 0, this);
	}
	

	public static void main(String[] args) {
		Kasse k = new Kasse();
		
	}

	public class MyMouseMotionListener implements MouseMotionListener {
		public void mouseDragged(MouseEvent e) {
			if (e.getX() >= x1 && e.getX() <= x1 + 50) {
				if (e.getY() >= y1 && e.getY() <= y1 + 50) {
					x1 = e.getX() - 25;
					y1 = e.getY() - 25;
					repaint();
				}
			}
			if (e.getX() >= 620 && e.getX() <= 710) {
				if (e.getY() >= 380 && e.getY() <= 410) {
					
					j++;

				}
			}
			
			if (e.getX() >= x2 && e.getX() <= x2 + 50) {
				if (e.getY() >= y2 && e.getY() <= y2 + 50) {
					x2 = e.getX() - 25;
					y2 = e.getY() - 25;
					repaint();
				}
			}
			
			if (e.getX() >= x3 && e.getX() <= x3 + 50) {
				if (e.getY() >= y3 && e.getY() <= y3 + 50) {
					x3 = e.getX() - 25;
					y3 = e.getY() - 25;
					repaint();
				}
			}
			
		}

		public void mouseMoved(MouseEvent e) {
			// TODO Auto-generated method stub

		}

	}
	


}
```


Hier mein Quelltext wie gewünscht...
Also hier könnt ihr sehen das ich Images zeichnen lassen will in meinem Fenster. Ich hoffe das ist so verständlich wie ich es sage. So nun will ich das die Bilder aber nicht gleich gezeichnet werden sondern sie sollen wie gesagt in verschieden Abständen gezeichnet werden. Tut mir leid das ich vorher keinen Quelltext mit gepostet habe.


----------



## Andi_CH (11. Mrz 2011)

Und wo hast du versucht die delays einzubauen?
Warum ist dein Code gar nicht komilierbar? Das ist extrem motivierend.
(Ah hab gesehen MyWindowsListener fehlt  - na ja)


----------



## Tomate_Salat (11. Mrz 2011)

Andi_CH hat gesagt.:


> Das ist extrem motivierend.



Könnte das nicht auch am Freitag liegen ;-)

_the revenge of my signature_


----------



## Mr_Lala (13. Mrz 2011)

Hat sich alles erledigt..


----------

