/***********************************************************/
/* Prof. Dr. Carsten Vogt                                  */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                  */
/* http://www.nt.fh-koeln.de/vogt                          */
/*                                                         */
/* Das Programm zeigt den Umgang mit Tastatur-Ereignissen. */
/***********************************************************/

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


class KeyTestFrame extends JFrame {

  JTextField ausgabe;      // zur Ausgabe der Ereignisse des WindowListeners

  // Konstruktor

  KeyTestFrame(String s) {

   // Erzeugen des Rahmens des Hauptfensters:

   super(s);
   Container c = getContentPane();
   c.setLayout(new FlowLayout());
   c.setForeground(Color.black);

   // Hinzufuegen des Textfelds,
   // in dem die erkannten Ereignisse ausgegeben werden:

   ausgabe = new JTextField(25);
   ausgabe.setFont(new Font("Arial",Font.BOLD,20));
   ausgabe.setForeground(Color.blue);
   c.add(ausgabe);

   // Komponenten anordnen und sichtbar machen:

   setLocation(200,200);
   setSize(500,150);
   setVisible(true);

   ausgabe.addKeyListener(new MeinKeyListener());

  }

 // Definition des KeyListeners: reagiert auf Tastatur-Ereignisse

 class MeinKeyListener implements KeyListener {

  public void keyPressed(KeyEvent e) {
   StringBuffer stb = new StringBuffer("Taste gedrueckt");
   if (e.isAltDown())
     stb.append(" ALT");
   if (e.isAltGraphDown())
     stb.append(" ALTGR");
   if (e.isControlDown())
     stb.append(" CTRL");
   if (e.isShiftDown())
     stb.append(" Shift");
   System.out.println(stb); 
   ausgabe.setText(stb.toString()); 
  }

  public void keyReleased(KeyEvent e) {
   System.out.println("Taste losgelassen"); 
   ausgabe.setText("Taste losgelassen"); 
  }

  public void keyTyped(KeyEvent e) {
  }

 }

}

// Hauptprogramm: erzeugt den Frame

public class KeyEvents {

  public static void main(String args[]) {

    new KeyTestFrame("Key-Tests");  

  }

}

