// M.Martin 26.10.02
/* Grund-Applet zu
   Datenstruktur "array" (Feld)
   Aufgabe: Für ein Array a soll die Möglichkeit der Ein- und Ausgabe über
   Textfelder geschaffen werden. Außerdem soll der Benutzer mit einem Button
   alle Variablen von a mit Zufallszahlen zwischen 0 und 200 belegen können.
*/

import java.awt.*;
import java.awt.event.*;

public class Array extends java.applet.Applet
{ public final static int n=5;
  public int[] a = new int[n];
  public TextField[] tf = new TextField[n];
  Choice wahl1 = new Choice();
  Color hellblau =new Color(0x00,0xEF,0xFF);

  public void erweitere()
  {
    /*Diese Methode ist leer und nur dazu da, dass sie später
      überschrieben werden kann.
    */
  }
  public void init()
  { Button AktionsTaste1;
    Button AktionsTaste2;
    for (int i=0;i<n;i++)
    { tf[i] =new TextField();
      tf[i].setBounds(5+40*(i+1),40,35,20);
      add(tf[i]);
      tf[i].addActionListener(new ActionListener()
      {  public void actionPerformed(ActionEvent e)
        { TextFelderIna();
        }
     });
    }
    AktionsTaste1 = new Button("Markiere blau");
    AktionsTaste1.setBounds(5,260,100,30);
    AktionsTaste1.setBackground(hellblau);
    AktionsTaste1.setForeground(Color.black);
    AktionsTaste2 = new Button("Zufallszahlen");
    AktionsTaste2.setBounds(105,260,100,30);
    this.setBackground(Color.black);
    setLayout(null);
    add(AktionsTaste1);
    AktionsTaste1.addActionListener(new ActionListener()
     {  public void actionPerformed(ActionEvent e)
        { MarkiereBlau();
        }
     });
    add(AktionsTaste2);
    AktionsTaste2.addActionListener(new ActionListener()
     {  public void actionPerformed(ActionEvent e)
        { ZufallsZahlen();
        }
     });
     for (int i=0;i<n;i++)
     {
      wahl1.add (""+i);
     }
     wahl1.setBounds(5,240,50,30);
     add(wahl1);
     erweitere(); // Aufruf späterer Erweiterungen -> Vererbung/Überladung
  } // init

  public void aInTextFelder()
  {
    for (int i=0;i<n;i++)
    {
      tf[i].setText(""+a[i]);
    }
  }

  public void TextFelderIna()
  {
    for (int i=0;i<n;i++)
    {
      a[i]=Integer.parseInt(tf[i].getText());
    }
  }
  public void ZufallsZahlen()
  { for (int i=0; i<n;i++)
    {
      a[i]=(int) (200*Math.random());
    }
    aInTextFelder(); // anzeigen
    MarkiereAllesWeiss();
    
  } // Ende der Methode Zufallszahlen
  
  /**************** Hilfsmethoden für farbige Markierungen ************/
  public void Markiere(int i,Color c)
  {
    if (tf[i].getBackground()!=hellblau)
     tf[i].setBackground(c);
  }
  public void MarkiereBlau()
  {
    tf[wahl1.getSelectedIndex()].setBackground(hellblau);
  }
  public void MarkiereAllesWeiss()
  { for (int i=0;i<n;i++)
    {
     tf[i].setBackground(Color.white);
    }
  }
} // Ende des Applets
