Kreis kleiner werden lassen mit Runnable und Frame

Hi,
ich wollte gerne einen Kreis kleiner werden lassen, aber der größer soll angezeigt bleiben.

Mein Quelltext:
Java:
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;


public class KreisZeichnen extends Frame implements Runnable {

	public KreisZeichnen(){
		super("TEST KREIS");
		this.setSize(200,200);
		this.show();
	}
	public KreisZeichnen (Graphics g){
		super.paintAll(g);
		g.setColor(Color.BLACK);
		g.drawOval(100, 100, 50, 50);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	KreisZeichnen kz = new KreisZeichnen();
	
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			try {
				repaint();
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

Das Problem er zeigt noch nicht mal einen Kreis an.
 
Zuletzt bearbeitet von einem Moderator:
Du rufst auch nie die Methode auf, mit der er den Kreis zeichnen soll:
Java:
import javax.swing.JFrame;

public class KreisZeichnen extends JFrame implements Runnable{
	public KreisZeichnen(){
		super("Kreis Zeichnen");
		setSize(200, 200);
		setVisible(true);
		run();
	}
	
	public static void main(String[] args){
		new KreisZeichnen();
	}
	
	public void run(){
		for( int i = 0; i < 10000; i++ ){
			getGraphics().drawOval(50+i/200, 50+i/200, 100-i/100, 100-i/100);
			try{
				Thread.sleep(1);
			}
			catch(InterruptedException e){}
		}
	}
}
 
Hi
Kannst du den Code bitte in Java-Tags (BBCode) einfassen, wie es bei mir in der Signatur steht? das wäre hilfreich!

Was willst du genau? Dass beim ersten Zeichen 1 Kreis, nach 1 Sekunde 2 Kreise, nach 2 Sekunden 3 Kreise, … zu sehen sind?

Allgemeiner Tipp: du solltest nur im AWT-Event-Thread zeichnen – auf gar keinen Fall in einem anderen Thread!

Ich würde so vorgehen:
• eine allgemeine paintComponent()-Methode schreiben, die z.B. ein Array von Kreisen zeichnet
• beim Initialisieren des Components ein Element in dieses Array speichern
• per Timer regelmäßig eine Methode aufrufen, die die Daten im Array entsprechend anpasst und dann repaint() aufruft, damit die paintComponent()-Methode aufgerufen werden kann
 
Zurück