AWT Kleine Hilfestellung bei Bildern in Mediatracker

Status
Nicht offen für weitere Antworten.

ElBobby

Mitglied
Hallo ich möchte in meiner Update Methode die Bilder laden, welche ich zuvor in ein Mediatrackerobejkt
verfrachtet habe ( img, i bis n ). Leider sehe ich keine Methode um die Bilde laden zu können und mein Handbuch der
Javaprogrammierung beschreibt es nicht so wirklich. Ist mein Ansatz denn richtig?

Und ist mein Vorgehen hinsichtlich dessen, dass repaint alle x ms alle Bilder neu laden soll korrekt?

Danke für eure Tips!

Hier nun der Code:
Java:
public class Laura
{

	private String Bild;
	
	public String getBild()
	{
		return this.Bild;
	}
	
	public void setBild(String pfad)
	{
		this.Bild = pfad;
	}
	
	public Laura(String Bild)
	{
		this.Bild = Bild;
	}
}


________


Java:
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.util.Hashtable;


public class MyFrame extends Frame
{
	private Image img;
	private MediaTracker mt = new MediaTracker(this);
	
	public MyFrame(Hashtable<Integer, Laura> hash)
	{
		super("AWT Test");
		setSize(800, 600);
		setVisible(true);
		
		//Mein Listener
		
		// MediaTracker mit Befüllen
		for(int i = 0;i<hash.size();i = i +1)
		{
			img = getToolkit().getImage(hash.get(i).getBild());
			mt.addImage(img, i);
		}
		
		repaint();
	}
	
	public void paint(Graphics g)
	{
		g.drawImage(img, 10, 10, this); 
		// Warum als Observer this? Wie kann ich nun alle BildoObjekte aus dem
		// Mediaracker auslesen und einsetzen?
	}
}

________


Java:
import java.util.Hashtable;

public class MeineMain
{
	
	
	public static Hashtable<Integer, Laura> Hashfuellen()
	{
		Hashtable<Integer, Laura> HashLaura = new Hashtable<Integer, Laura>();
		
		
		for(int i = 0;i< 10;i = i +1)
		{
			HashLaura.put(i,new Laura("test.gif"));
		}
		return HashLaura;
		
	}
	
	public static void main(String[] args)
	{
		MyFrame test = new MyFrame(Hashfuellen());
		
		int i = 0;
		i++;
	}
	
}

Gruß,

Bobby
 
Zuletzt bearbeitet:
mt.waitForAll();
fehlt vielleicht noch,

noch ein vielleicht: besser könnte die Methode
new ImageIcon(filename).getImage();
sein, bzw.
image = Toolkit.getDefaultToolkit().getImage(filename);
welches von obigen ImageIcon auch aufgerufen wird


Methoden und Variablen klein schreiben!
 
Ok, da mt.waitForAll(); kann ich verarbeiten, füge ich ein.


"noch ein vielleicht: besser könnte die Methode
new ImageIcon(filename).getImage();
sein, bzw.
image = Toolkit.getDefaultToolkit().getImage(filename);
welches von obigen ImageIcon auch aufgerufen wird"

Was genau meinst du damit? Ich verstehe es nicht.

Danke.
 
> Was genau meinst du damit? Ich verstehe es nicht.

na offensichtlich sind das Methoden zum Laden von Bildern,
aber wie ich sehe, benutzt du das eh schon, da habe ich nicht genau geschaut,

dachte, mit diesen Lade-Methoden wäre ein MediaTracker nicht nötig,
aber bei google finde ich MediaTracker auch zusammen mit getToolkit(),
also weiß ich eigentlich gar nichts genaues zum ganzen Thema 😉
 
Heyho,

ich habe jetzt den Mediatracker erstmal wieder rausgenommen und iteriere mein Hashtable erstmal.

Letztlich ist mein Ziel einige Bilder in dem Frame zu haben, die dann gezeichnet werden. Später bekommen diese
dann auch noch als Attribute x und y Koordinaten, die sich auch im Verlauf randommäßig verändern.

Ist für dieses Ziel mein Vorgehen denn richtig?
 
merkwürdig finde ich, dass du in einer Schleife x Bilder lädst, und sie alle in derselben Variable speicherst:
img = getToolkit().getImage(hash.get(i).getBild());
dann ist am Ende nur das letzte Bild vorhanden..



grundsätzlich kann man zum Vorgehen 'Bilder laden + in paint anzeigen' wenig meckern, aber viel ist davon ja noch nicht fertig
 
Super Sache,

das Problem mit dem Zeichnen habe ich geschafft.

Stell dir einfach vor in der Hash wären Objekte mit verschiedenen Pfaden zu Bildern. Ich konnte es nun so bauen,
dass die Hashiteriert wird und alles gezeichnet wird in der paint-Methode.

Die Objekte in der Hash haben auch Koordinaten welche sich ändern werden. Wie kann ich es gewährleisten, dass in einer
beliebigen Zeit neugezeichnet wird, ohne das überdeckt wurde? Mit Repaint()?

Danke
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben