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

/**
 * Illustrates a buggy/faulty method of creating
 * a special JTextField. 
 * 
 * This class traps and converts uppercase characters to lowercase
 *
 * This illustrates a simple example of the KeyListener
 * class, and a faulty example of trying to change
 * a JTextField. The example is flawed (among other reasons)
 * because text can get into a field other than by typing, and
 * trapping key events only covers typing.
 *
 * There's also setText and paste as methods of jamming characters
 * into a JTextField
 *
 * A flawed attempt at a JTextField that processes
 * key events to change how characters are displayed.
 * Instead, the JTextField model should change
 *
 */

public class FlawedLowerTextField extends JTextField implements KeyListener
{
    public FlawedLowerTextField()
    {
	this(0);
    }

    public FlawedLowerTextField(int size)
    {
	super(size);
	addKeyListener(this);
    }
    
    public void keyReleased(KeyEvent event)
    {
	// required for KeyListener
    }
    
    public void keyPressed(KeyEvent event)
    {
	// required for KeyListener	
    }
    
    public void keyTyped(KeyEvent event)
    {
	char ch = event.getKeyChar();
	System.out.println("processed "+ch);
	event.setKeyChar(Character.toLowerCase(ch));
    }
}
