LogIn en Java

   Ya varias veces me han preguntado como hacer LogIn en Java, o como validar 2 campos de texto para habilitar un botón (lo típico de un LogIn)... Bueno, ya que son muchos los que tienen esta duda explico como hay que hacer....
  • Creamos el panel principal.
  • Creamos los campos de texto.
  • Creamos el botón.
  • Lo agregamos todo a nuestro panel principal.  
  • Almacenamos en una variable el estado del botón (true o false).
  • Creamos un listener para los campos de texto.
  • Agregamos un listener para pasar el foco a cada uno de los componentes. 
  • Agregamos al listener la condición de si el campo esta vacío coloque verdadera la variable del botón (true) o de lo contrario no lo haga (false).
  • Validamos nuestro LogIn.
   Sí, se ve que son muchos pasos pero en realidad es algo muy sencillo de hacer, aquí un ejemplo básico de lo que es un LogIn en Java, la clase se llama "btn_login"

import javax.swing.*;
import java.awt.event.*;
@SuppressWarnings("deprecation")
public class btn_login extends JFrame {
 boolean boton=false;
 JPanel PANEL = new JPanel();
 JTextField USR = new JTextField(25);
 JPasswordField PASS = new JPasswordField(25);
 JLabel USER = new JLabel("Usuario");
 JLabel CLAVE = new JLabel("Clave");
  JButton BOTON = new JButton("Ok");

 public btn_login() {
  super("Login");
  setLocation(100,100);
  setSize(320,160);
  add(PANEL);
  PANEL.add(USER);
   PANEL.add(USR);
   PANEL.add(CLAVE);
   PANEL.add(PASS);
   PANEL.add(BOTON);
   BOTON.setEnabled(boton);
  USR.addKeyListener(new Comprobar());
  PASS.addKeyListener(new Comprobar());
  BOTON.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt){
    Validar();
   }
  });
  USR.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt){
    PASS.requestFocus();
   }
  });
  PASS.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt){
    if(boton)
     Validar();
    else
     USR.requestFocus();
   }
  });
  show();
 }

 public class Comprobar extends KeyAdapter {
  public void keyTyped ( KeyEvent evt ){
   if(!USR.getText().equals("") &&
   !PASS.getText().equals("")){
    boton=true;
    BOTON.setEnabled(boton);
   } else {
    boton=false;
    BOTON.setEnabled(boton);
   }

  }
 }

 void Validar(){
  JOptionPane.showMessageDialog(null,"Hay escrito algo "+
     "y procesas el LogIn");
 }

 public static void main(String[] arg) {
  JOptionPane.showMessageDialog(null,"Validando un login...\n");
  JOptionPane.showMessageDialog(null,"By Carlitox ("+
   "http://calitoxenlaweb.blogspot.com)");
  new btn_login();
 }
}

   Como dije es algo básico, lo mas importante son los listener del evento del teclado (los del tipo keyTyped) pues son los que evalúan si los campos estan vacíos para habilitar el botón o no cada vez que se presione una tecla.