/*****************************************************/
/* Prof. Dr. Carsten Vogt                            */
/* FH Koeln, Fak. 07 / Nachrichtentechnik            */
/* http://www.nt.fh-koeln.de/vogt                    */
/*                                                   */
/* Das Programm zeigt den Gebrauch von Textfenstern. */
/*****************************************************/

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

class FrameFuerTf extends JFrame {

  // Textfelder zur Eingabe bzw. Anzeige eines Klartexts:

  private JTextField eingabeFeld, ausgabeFeld;

  // Passwortfeld, bei dem der eingegebene Text verborgen bleibt:

  private JPasswordField passwortFeld;

  // Label zur Anzeige eines statischen Texts:
 
  private JLabel label;

  // Konstruktor zur Erzeugung der Benutzeroberflaeche
  // (Parameter gibt Fensternamen an):

  FrameFuerTf(String s) {

   // Fensterrahmen erzeugen:

   super(s); 

   // Container für Labels und Textfelder erzeugen:

   Container c = getContentPane();
   c.setLayout(new GridLayout(6,1));
   c.setForeground(Color.black);

   // Textfelder und Labels erzeugen und einfuegen:

   label = new JLabel("normale Texteingabe:");
   label.setFont(new Font("Arial",Font.BOLD,24));
   label.setForeground(Color.black);
   c.add(label);

   eingabeFeld = new JTextField();
   eingabeFeld.setFont(new Font("Arial",Font.BOLD,24));
   eingabeFeld.setForeground(Color.blue);
   c.add(eingabeFeld);

   label = new JLabel("Eingabe eines Passworts:");
   label.setFont(new Font("Arial",Font.BOLD,24));
   label.setForeground(Color.black);
   c.add(label);

   passwortFeld = new JPasswordField();
   passwortFeld.setFont(new Font("Arial",Font.BOLD,24));
   passwortFeld.setForeground(Color.blue);
   c.add(passwortFeld);

   label = new JLabel("Eingebener Text:");
   label.setFont(new Font("Arial",Font.BOLD,24));
   label.setForeground(Color.black);
   c.add(label);

   ausgabeFeld = new JTextField(10);
   ausgabeFeld.setFont(new Font("Arial",Font.BOLD,24));
   ausgabeFeld.setForeground(Color.red);
   c.add(ausgabeFeld);

   // Listener für Text- und Passwortfeld
   // erzeugen und registrieren:

   TextListener lisText = new TextListener();
   eingabeFeld.addActionListener(lisText);
   passwortFeld.addActionListener(lisText);

   // Komponenten anordnen und sichtbar machen:

   pack();
   setLocation(100,100);
   setVisible(true);

  }

  // Definition der Listener-Klasse für Textfenster 

  class TextListener implements ActionListener {

   // Die Methode actionPerformed() legt die Aktionen fest,
   // die nach Eingabe eines Texts in ein Textfenster
   // ausgefuehrt werden sollen: 

   public void actionPerformed(ActionEvent e) {

    // in das Textfeld ausgabeText wird der Text uebernommen,
    // der in dem Textfeld steht, das die Eingabe ausgeloest hat

    ausgabeFeld.setText(e.getActionCommand());

   }

  }

}

// Hauptprogramm zur Erzeugung der Oberflaeche:

public class Texte {

 public static void main(String args[]) {

  new FrameFuerTf("Textfelder");  

 }

}


