# Threads und der actionlistener



## Proggy (9. Mrz 2007)

Hallo,

ich habe ein Applet programmiert und Runnable implementiert. Das lief auch alles soweit super.

```
public class zahlenspiel extends Applet implements Runnable
```
Jetzt will ich einen Button auf das Applet setzen, mit dem es neugestartet werden kann. Den Button selbst habe ich, aber mit dem actionlistener hapert es.
Wenn ich in der Hauptklasse actionlistener implementiere, dann meckert er hier:

```
public void start()
	{
		init();
		Thread th1=new Thread(this);    //the constructor Thread(zahlenspiel) is undefined (Fehlermeldung)
		th1.start();
         }
```
was mach ich da jetzt??? Danke!


----------



## SlaterB (9. Mrz 2007)

```
import java.applet.Applet;

public class Zahlenspiel
    extends Applet
    implements Runnable
{

    public void start()
    {

        Thread th1 = new Thread(this);
        th1.start();
    }

    public void run()
    {
    }
}
```
kompiliert bei mir, bei dir nicht?

hast du eine eigene Klasse namens Thread?


----------



## Proggy (9. Mrz 2007)

bei mir sieht der Quellcode ja auch so aus: 
	
	
	
	





```
public class zahlenspiel extends Applet implements ActionListener
```

usw.

ich habe Runnable durch ActionListener ersetzt, weil ich einen Button brauche. Oder muss ich das nicht?

in der Init-Methode steht u.a. folgendes:

```
Button neustart = new Button();
	    neustart.addActionListener(neustartlistener);
	    neustart.setBounds(550,300,100,20);
	    neustart.setLabel("Neustart");
	    add (neustart);
```


----------



## SlaterB (9. Mrz 2007)

vorhin schriebst du noch was von Runnable...,

ohne Runnable kein Thread, ohne ActionListener kein Button,
du musst selber wissen was du willst,

kann auch beides sein:
implements ActionListener, Runnable

geht auch ganz ohne, wenn du stattdessen anonyme oder andere Klassen für den Thread und/ oder den Button nimmst,
das wäre schöner


----------



## Proggy (9. Mrz 2007)

danke, wusste nicht, daß man auch zwei Klassen implementieren kann


----------



## SlaterB (9. Mrz 2007)

man kann beliebig viele 'Interface' implementieren,
aber nur von einer Klasse erben


----------

