public class Ventana extends JFrame {

    Container contenedor;
    JTextField campoDni, campoEmail, campoMovil, campoFijo;
    JLabel labelDNI, labelEmail, labelMovil, labelFijo;

    public Ventana() {
        init();
        pack();
    }

    private void init() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setExtendedState(JFrame.NORMAL);
        setTitle("Validaciones");
        instancias();
        colocacion();
        accion();
    }

    private void accion() {
        campoDni.addFocusListener(new ManejoFoco());
        campoMovil.addFocusListener(new ManejoFoco());
        campoFijo.addFocusListener(new ManejoFoco());
        campoEmail.addFocusListener(new ManejoFoco());
    }

    private void colocacion() {

        contenedor.setLayout(new GridLayout(4, 4));
        contenedor.add(labelDNI);
        contenedor.add(campoDni);
        contenedor.add(labelEmail);
        contenedor.add(campoEmail);
        contenedor.add(labelMovil);
        contenedor.add(campoMovil);
        contenedor.add(labelFijo);
        contenedor.add(campoFijo);
    }

    private void instancias() {
        contenedor = this.getContentPane();
        labelDNI = new JLabel("DNI");
        labelEmail = new JLabel("EMAIL");
        labelFijo = new JLabel("FIJO");
        labelMovil = new JLabel("MOVIL");
        campoDni = new JTextField("Introduzca DNI");
        campoDni.setToolTipText("Introduce DNI válido (8letras y un número)");
        campoEmail = new JTextField("Introduzca EMAIL");
        campoEmail.setToolTipText("Introduce EMAIL válido");
        campoMovil = new JTextField("Introduzca MOVIL");
        campoMovil.setToolTipText("Introduce MOVIL válido (8números)");
        campoFijo = new JTextField("Introduzca FIJO");
        campoFijo.setToolTipText("Introduce FIJO válido (9 ó 10 números)");
        campoMovil.setInputVerifier(new Verificador(labelMovil));
        campoEmail.setInputVerifier(new Verificador(labelEmail));
        campoDni.setInputVerifier(new Verificador(labelDNI));
        campoFijo.setInputVerifier(new Verificador(labelFijo));
    }

    class ManejoFoco extends FocusAdapter {
        @Override
        public void focusGained(FocusEvent e) {
            ((JTextField) e.getSource()).setText("");
        }
    }

}
package validaciones;

import javax.swing.*;
import java.awt.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Verificador extends InputVerifier {

    JLabel l;

    public Verificador(JLabel l) {
        this.l = l;
    }

    @Override
    public boolean verify(JComponent input) {

        JTextField campo = (JTextField) input;
        Pattern pattern;
        Matcher matcher;

        if (campo.getToolTipText().contains("DNI")) {
            pattern = Pattern.compile("^(([A-Z]\\d{8})|(\\d{8}[A-Z]))$");
            matcher = pattern.matcher(campo.getText());
            System.out.printf(campo.getToolTipText());
            if (matcher.matches()) {
                l.setForeground(Color.GREEN);
                return true;
            } else {
                l.setForeground(Color.RED);
                return false;
            }

        } else if (campo.getToolTipText().contains("MOVIL")) {
            pattern = Pattern.compile("[1-9]{1}+[0-9]{8}");
            matcher = pattern.matcher(campo.getText());
            if (matcher.matches()) {
                l.setForeground(Color.GREEN);
                return true;
            } else {
                l.setForeground(Color.RED);
                return false;
            }
        } else if (campo.getToolTipText().contains("FIJO")) {
            pattern = Pattern.compile("[1-9]{1}+[0-9]{10}");
            matcher = pattern.matcher(campo.getText());
            if (matcher.matches()) {
                l.setForeground(Color.GREEN);
                return true;
            } else {
                l.setForeground(Color.RED);
                return false;
            }
        } else if (campo.getToolTipText().contains("EMAIL")) {
            pattern = Pattern.compile("^[\\w]*@[a-zA-Z0-9]+([.[a-zA-Z]0-9]+)*(.[a-z]{2})");
            matcher = pattern.matcher(campo.getText());
            if (matcher.matches()) {
                l.setForeground(Color.GREEN);
                return true;
            } else {
                l.setForeground(Color.RED);
                return false;
            }
        } else {
            return true;
        }
    }
}