# Fehlermeldung weiß nicht weiter.



## Sabse (17. Feb 2006)

Hallo Leute,

ich wusste jetzt nicht genau ob ich das in den Thread awt oder applets schreiben soll weil ich ein Programm geschrieben habe das mit awt und applets ist.

Auf jedenfall muss ich einen Tacho von einem Auto programmieren, also mit geschwindigkeit, kilometerstand, fahrzeit, tankinhalt, reichweite und und und, das hab ich jetzt mal angefangen und es läuft auch schon ziemlich gut. Die Anforderung ist dass das Fahrzeug gestartet, angehalten und wieder gestartet werden kann. Dann gibt es noch einen Reset button wo alles wieder auf null gesetzt wird, und einen button neue strecke wo dann der kilometer stand auf null gesetzt wird, nicht aber der totale km stand und tank und reichweite. Dann gibt es noch einen button "volltanken"

Ausserdem wird angezeigt ob das fahrzeug fährt, steht oder betankt wird.

Mein Problem ist das wenn ich das Fahrzeug fahren lasse und es dann wieder anhalte, nichts mehr geht. Kein button reagiert und es kommt folgende Fehlermeldung:

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

und:

at java.awt.EventDispatchThread.run(Unknown Source)

Kann mir jemand helfen?

Bin echt fast am verzweifeln....

Lg Sabse


----------



## Roar (17. Feb 2006)

Hallo,
bitte poste mal die ganze fehlermeldung. am wichtigsten sind die ersten paar zeilen, nicht die letzten. und ein bisschen code von der stelle wo der fehler auftritt kann auch nie schaden.


----------



## Sabse (17. Feb 2006)

Hier mal alles (war ein versehen das es nur die letzten zeilen waren)

Exception in thread "AWT-EventQueue-1" java.lang.IllegalThreadStateException
	at java.lang.Thread.start(Unknown Source)
	at MFD$1.actionPerformed(MFD.java:241)
	at java.awt.Button.processActionEvent(Unknown Source)
	at java.awt.Button.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)



```
// Anfang der Listener
		Fahren.addActionListener(new java.awt.event.ActionListener()
		{
			public void actionPerformed(java.awt.event.ActionEvent e)
			{
				f1.start();
				t1.start();
				s1.start();
				t2.start();
				Statusanzeige.setText("Auto fährt!");
			}
		});
		Anhalten.addActionListener(new java.awt.event.ActionListener()
```


----------



## Roar (17. Feb 2006)

ah!
du kannst einen Thread nicht starten wenn er schon gestartet ist, oder auch schon zu ende gelaufen ist. du musst den trhead neu instantiieren, und dann starten.


----------



## Sabse (17. Feb 2006)

ähm sorry aber mit Threads bin ich noch nicht so fit, wie mach ich denn das?

Das ist das erstemal das ich einen Thread (in dieser größen ordnung und funktionen) programmiere.


----------



## Roar (17. Feb 2006)

du hast doch irgendwo stehen f1 = new ... und t1 = new ...
im actinolistener, wo die trheads gestartet werden musst du nochmal f1 = new ... und t1= new ... schreiben, und danach start() aufrufen.


----------



## Sabse (17. Feb 2006)

also hier hab ich die ganzen objekte erzeugt:


```
import java.awt.*;
import java.applet.Applet;
public class MFD extends Applet
{
//	Erzeugung der Objekte
		 Fahrzeitthread f1 = new Fahrzeitthread(" ", FahrzeitL);
```

und das ist mein action listener:


```
// Anfang der Listener
		Fahren.addActionListener(new java.awt.event.ActionListener()
		{
			public void actionPerformed(java.awt.event.ActionEvent e)
			{
				f1.start();
				t1.start();
				s1.start();
				t2.start();
				Statusanzeige.setText("Auto fährt!");
			}
		});
		
		Anhalten.addActionListener(new java.awt.event.ActionListener()
		{
			public void actionPerformed(java.awt.event.ActionEvent e)
			{
				f1.anhalten();
				t1.anhalten();
				s1.anhalten();
				t2.anhalten();
				Statusanzeige.setText("Auto hat angehalten!");
			}
		});
		// Ende der Listener
```


----------

