/*

Um die Funktionsweise dieser Methoden im Zusammenspiel mit den Methoden der Klasse KeyEvent besser verstehen zu können, wollen wir zwischen Zeichentasten und Funktionstasten unterscheiden. Zeichentasten sind dabei solche Tasten, mit denen Buchstaben, Ziffern oder sonstige gültige Unicode-Zeichen eingegeben werden, wie z.B. a, A, B, 1, 2, %, +, aber auch ESC, SPACE oder TAB. Zu den Funktionstasten gehören beispielsweise F1, F2, Pos1 oder CursorLinks, aber auch die Umschalttasten STRG, ALT und UMSCHALT.

Die Methode keyTyped wird immer dann aufgerufen, wenn eine Zeichentaste gedrückt wurde. Beim Drücken einer Funktionstaste wird sie dagegen nicht aufgerufen. Im Gegensatz dazu wird keyPressed bei jedem Tastendruck aufgerufen, unabhängig davon, ob es sich um eine Zeichentaste oder eine Funktionstaste handelt. Mit keyPressed können sogar in beschränktem Umfang die Feststelltasten wie NUM LOCK oder CAPS LOCK erkannt werden. Beide Methoden erhalten auch Tastatur-Repeats, werden also bei längerem Festhalten einer Taste wiederholt aufgerufen. Die Methode keyReleased wird aufgerufen, wenn eine gedrückte Taste losgelassen wurde, unabhängig davon, ob es sich um eine Zeichen- oder Funktionstaste handelte.

Um beim Auftreten eines Tastatur-Events zu erkennen, welche Taste gedrückt wurde, stellt die Klasse KeyEvent die Methoden getKeyCode und getKeyChar und zusätzlich die aus InputEvent geerbten Methoden isShiftDown, isControlDown, isMetaDown und isAltDown zur Verfügung: 
*/

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


public class Key01 extends JFrame   {

  JButton BnOk = new JButton("Ok");
  JButton BnEsc = new JButton("Abbruch");


  private JPanel jpanel;


  public Key01() {
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setGUI();
  }

  private void setGUI() {
    setSize(400, 430);
    setTitle("JFrame als Dialog");

    BnOk.setFont( new Font("Arial", Font.BOLD,18)  );
    BnEsc.setFont( new Font("Arial", Font.BOLD,18)  );
    BnOk.setPreferredSize( BnEsc.getPreferredSize() );

    this.getContentPane().setLayout( new BorderLayout() );
    jpanel = new JPanel();
    jpanel.setBackground(Color.red);
    this.getContentPane().add( new JScrollPane(jpanel), BorderLayout.CENTER);

	JPanel pnButton = new JPanel();
	//pnButton.setBackground(Color.red);
	pnButton.setLayout( new FlowLayout() );
	pnButton.add(BnOk);
	pnButton.add(BnEsc);

    this.getContentPane().add( pnButton, BorderLayout.SOUTH );

          BnOk.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
              BnOk_Click();
            }
          });


          BnEsc.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
              BnEsc_Click();
            }
          });

         BnOk.addKeyListener(new KeyAdapter() {
                    public void keyReleased(KeyEvent e) {
                                  System.out.println("keyReleased");
                     }
		    public void keyPressed(KeyEvent evt) {
                              System.out.println("KeyPressed");
		        if(evt.getKeyCode()==KeyEvent.VK_ENTER) {
                            System.out.println("          Enter");
		        }		        
		    }
		});

  } // setGUI

    private void BnOk_Click() {
        System.out.println("Hier in Ok");
    }

    private void BnEsc_Click() {
        setVisible(false);
        System.exit(0);
    }







  public static void main(String[] args) {
    Key01 frame = new Key01();
    frame.setVisible(true);
 }

}  // Key01


