# reaktionstest



## babuschka (6. Mai 2007)

ich wollte einen kleinen reaktionstest als applet schreiben, hab aber eigentlich keine ahnung davon    naja meine frage ist wie kann ich deine console ins applet mit reinbringen sodass ich System.out.println benutzen kann und wie muss ich die run mit der mouseDown so verknüpfen, dass auch nur wenn das Los schon ausgegeben wurde der Mausklick gezählt wird


```
import java.applet.*;
import java.awt.*;
import java.util.Random;

public class Reaktionstest extends Applet implements Runnable
{
Random generator = new Random();
long time1;

      public void init() { }

      public void start() 
      {
          Thread th = new Thread (this);
          th.start ();
      }
      public boolean mouseDown (Event e, int x, int y)
      {
          long time2 = System.currentTimeMillis() - time1;
          System.out.println(time2);
          return true; 
      }
      
      public void run()
      {
      System.out.println ("Sobald LOS ausgeben wird müssen sie eine beliebige Taste drücken");
      System.out.println (" Auf die Plätze............... Fertig?...............");
      try
      {
      // Stoppen des Threads für in Klammern angegebene Millisekunden
      int tmp = generator.nextInt (4000) + 1000;
      Thread.sleep (tmp);
      System.out.println("LOS");
      time1 = System.currentTimeMillis();
      }
      catch (InterruptedException ex)
      {
          System.out.println ("Error -.-");
      }
      }
      
      public void stop() { }

      public void destroy() { }

      public void paint (Graphics g) { }

}
```


----------



## dieta (6. Mai 2007)

Die Konsole kannst du nicht in Applet bringen  :lol: 

Normalerweise macht man solche Anzeigen mit Labels bzw. TextAreas o.Ä.:


```
public class Reaktionstest extends Applet implements Runnable
{
Random generator = new Random();
long time1;
Label l = new Label();

      public void init() { 
            setLayout(new BorderLayout());
            add("Center", l);
      }

      public void start()
      {
          Thread th = new Thread (this);
          th.start ();
      }
```

Den Text, den das Label anzeigen soll, kannst du dann mit l.setText(String text) ändern.

Die Eingabe kannst du am einfachsten über einen Mausklick lösen, dafür gibt es die Klasse "MouseListener". Dazu findest du aber in den FAQs, über die Foren Suche und bei Google eine ganze Menge. Such' einfach nach "MouseListener" oder für Tastatureingaben nach "KeyListener".


----------



## babuschka (6. Mai 2007)

ok danke


----------



## babuschka (6. Mai 2007)

hmm so sieht das jetzt aus


```
import java.applet.*;
import java.awt.*;
import java.util.Random;
import java.awt.event.*;

public class Reaktionstest1 extends Applet implements Runnable,MouseListener
{
Random generator = new Random();
long time1;
Label l = new Label();
int gestartet=0;
long time2;
      public void init() 
      {
            setLayout(new BorderLayout());
            add("Center", l);
            addMouseListener(this);
      }

      public void start()
      {
          Thread th = new Thread (this);
          th.start ();
      }
      public void run()
      {
      l.setText("Sobald LOS ausgeben wird müssen sie eine beliebige Taste drücken");
      l.setText(" Auf die Plätze............... Fertig?...............");
      gestartet=1;
      try
      {
      int tmp = generator.nextInt (4000) + 1000;
      Thread.sleep (tmp);
      l.setText("LOS");
      time1 = System.currentTimeMillis();
      gestartet=2;
      }
      catch (InterruptedException ex)
      {
          l.setText("Error");
      }
      }
      public void mouseClicked(MouseEvent e)
      {
          if (gestartet=2)
          {
           time2=System.currentTimeMillis-time1;
           gestartet=0;
           1.setText("super du hast " + time2 + " sekunden gebraucht");
          }
          else 
          {
            if (gestartet==1)
            {
              1.setText("zu früh");
            }
          }
      }
      public void mouseEntered(MouseEvent e)
      {
      }
      public void mouseExited(MouseEvent e)
      {
      }
      public void mousePressed(MouseEvent e)
      {
      }
      public void mouseReleased(MouseEvent e)
      {
      }
}
```

aber er zeigt mir in Zeile 40 und 49 den Fehler not a statement an :?:


----------



## dieta (7. Mai 2007)

Nach Zeile 40 hast du wie's aussieht eine geschweifte Klammer zu viel, und in Zeile 41 hast du [eins] statt [el] geschrieben.


----------

