# Thread für bewegte Zeichnung wird nicht gestartet



## Guest (13. Mrz 2007)

Kann mir jemand sagen wieso in diesem Programm der Thread nicht gestartet wird.


```
import java.awt.*;
	import javax.swing.*;



	public class Pendel extends JPanel implements Runnable
	{

	public void Pendel(){}

	private Thread runner = null;
	int wid;
	int heig;
	int x=0;
	int y=0;

	public void init()
	{
	}


	public void paintComponent(Graphics g)
	{
		wid=this.getSize().width;
		heig=this.getSize().height;
		//getxy(wid,heig);

		g.setColor(Color.black);
    g.fillRect(0,0,wid, heig);
    g.setColor(Color.red);

		g.drawLine(wid/2,0,x/2,150);
		g.fillOval(x/2-8,150,16,16);

	}

/*	public void getxy(int wid, int heig)
	{
		x=wid;
		y=heig;
	}*/
	public void start()
	{
		if(runner == null)
			{	runner = new Thread(this);
				runner.start();
			}

	}

	public void stop()
	{
		if(runner!=null)
			runner=null;
	}

	public void destroy()
	{
	}


	public void run()
	{
		while(runner==Thread.currentThread())
		{
			x=(x+1);
			y=(y+1);
			try{ Thread.currentThread().sleep(1000);
				 }catch(InterruptedException e){}
			repaint();
		System.out.println(x);
		System.out.println(y);


		}

	}
}
```
[/code][/list]


----------



## SlaterB (13. Mrz 2007)

weit start nie aufgerufen wird (blöd, diese Operation wie Thread.start zu nennen, gibt doch Verwechslung  ) , 
zumindest nicht in diesem Code,
prüfe mit System.out.println(), ob start jemals aufgerufen wird:


```
System.out.println("in start, runner is: "+runner);
if(runner == null)  {  
   runner = new Thread(this); 
   runner.start(); 
} 



.....

 public void run() 
 { 
      System.out.println("run läuft");
      while(runner==Thread.currentThread()) 
      { 
          ....
       }
  }
```


----------



## Gast (13. Mrz 2007)

Danke!
Stimmt, der Thread wird nicht gestartet.
Kurze Frage noch, wie müsste ich das Programm umschreiben damit er doch gestartet wird?


----------



## SlaterB (13. Mrz 2007)

wie muss man ein Programm schreiben, dass es etwas tut?
nun, indem man es so schreibt, dass es etwas tut!

an irgendeiner Stelle im Code, die mal drankommt, muss start aufgerufen werden 
z.B. in der main wenn dort das Objekt bekannt ist,
oder init, das klingt doch gut


----------

