2D-Grafik Von Thread aus Zeichnen

geqoo

Bekanntes Mitglied
Hallo,

Ich habe hier ein Problem und komme damit absolut nicht weiter.

Habe in meiner main Klasse folgenden Codeblock für die Paint-Methode geschrieben:

Java:
	public void paint (Graphics buff) {
		makeGlobal(buff);

		// Spielfeld 1 zeichen
		if (zeichnespielfeld1) {
			spielfeld.zeichneSpielfeld(25, 50, g2d);
		}
		// Spielfeld 2 zeichen
		if (zeichnespielfeld2) {
			spielfeld.zeichneSpielfeld(350, 50, g2d);
		}
		// Spielfeld 3 zeichen
		if (zeichnespielfeld3) {
			spielfeld.zeichneSpielfeld(25, 325, g2d);
		}
		// Spielfeld 4 zeichen
		if (zeichnespielfeld4) {
			spielfeld.zeichneSpielfeld(350, 325, g2d);
		}

		creepthread thread1 = new creepthread();
		thread1.start();
	}

Der Creepthread ist jetzt in einer anderen Quelldatei

Java:
public class creepthread extends Thread { 
	public void run () {
		BufferedImage img = null;
		try {
			img = ImageIO.read(new File("images/creep1.png"));
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		start.g2d.drawImage(img, 100, 100, null);
	}
}

So, der Thread läuft dann zwar, allerdings zeichner er mir das Bild nicht (Pfad schon geprüft, ist korrekt).
Könnt ihr mir sagen, was ich da machen muss, damit der Thread auf der 2D Grafik des Hauptfensters zeichnen kann? (Hauptfenster heißt übrigens start.java)
 
Das Graphics Objekt ist imho nur solange gültig bis die paint Methode ausläuft.

Dein Konzept mit dem Thread ist so wie es jetzt ist falsch. Was erhoffst du dir dadurch?
Wenns dir um das Laden des Bildes geht, dann mach das doch vorher, z.b. im Konstruktor des panels.
 
außerhalb der paint bzw. in Swing eher paintComponent-Methode wird nichts gezeichnet,
innerhalb der Methode wird ganz bestimmt kein Thread gestartet und wer weiß was du sonst noch alles machst,

schon haarsträubend, zu solch zentralen Themen gibt es doch wirklich Bücher und Tutorials mit bestimmten Vorgehensweisen,
alle ignoriert?
Galileo Computing :: Java ist auch eine Insel – 20 Grafikprogrammierung
http://www.java-forum.org/spiele-multimedia-programmierung/54795-quaxli-2d-spiele-tutorial.html
 
Ich möchte eigentlich nur ein Bild mit bestimmtem Takt durch das Spielfeld bewegen.
Und da es mehrere Figuren gibt, soll das ein Thread regeln.
 
Dann ist der Thread dazu da den Zustand zu ändern und ruft hin und wieder repaint() auf wenn sich was geändert hat.
gezeichnet wird NUR in der paintComponent Methode. Steht aber auch alles in den geposteten Tutorials, die solltest du dir mal durchlesen 🙂
 

Zurück
Oben