package javacodebook.gui.focus;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

/**
 * @author Benjamin Rusch
 * 
 * In diesem Bespiel wird demonstriert wie man den Initialen Focus einer
 * Komponente setzen kann, geht bei Swing und bei Awt. 
 * Verwendet wird hiebei ein kleiner Trick!
 */

public class FocusFrame  extends Frame {

	private TextField field1 = new TextField(15);
	private TextField field2 = new TextField(15);
	private TextField field3 = new TextField(15);

	/**
 	* Konstruktor von FocusFrame.  
 	*/	
	public FocusFrame(String title) {
		super(title);
		this.setLayout(new FlowLayout());
			
		// Die Vergabe des Focus bevor die Komponente sichtbar gemacht wurde 
		// bleibt  oft ohne Erfolg.
		// Trick: einen WindowListener registrieren, und erst wenn das Fenster 
		// geöffnet wurde den Focus setzen.
		addWindowListener(new WindowAdapter() {
	        public void windowOpened(WindowEvent e) {
	            field2.requestFocus(); // Focus wird gesetzt
	        }
	        public void windowClosing(WindowEvent e) {
	            System.exit(0);
	        }
	    });
		
		// Platzieren der Komponenten
		this.add(field1);
		this.add(field2);
		this.add(field3);
	}	
}
