Seguidores

MIS WEBS



miércoles, 17 de enero de 2018

CONFIRMAR UN CORREO CON JAVA

Eventos de foco FocusListener




Un evento de foco es aquel que se desemboca cuando tenemos seleccionado un determinado espacio de la interface, podemos tener un botón seleccionado, un marco, un archivo. Supongo que alguna vez habéis rellenado un formulario en una web, cuando cambias de casilla estas poniendo el foco en la siguiente casilla.
Para ello utilizaremos la interface FocusListener, por lo que estaremos obligados a implementar 2 métodos:
·         focusGained (FocusEvent e): el elemento adquiere el foco.
·         focusLost (FocusEvent e): el elemento pierde el foco.


En caso de no desear implementar los dos disponemos de la clase adaptadora FocusAdapter.
0.      Necesitaremos dos textfiled , las variables se declaran dentro de la lámina porque serán internas y de uso interno solo en la lamina
class A_lamina extends JPanel{
             public void paintComponent(Graphics g){//constructor       
                    super.paintComponent(g);
                   
                   
                    setBackground(Color.DARK_GRAY);
                    setLayout(null); //establecer diseño por defecto no
                    cuadro1=new JTextField();
                    cuadro2=new JTextField();
                    cuadro1.setBounds(100,50,150,20);
                    cuadro2.setBounds(100,90,150,20);
                    add(cuadro1);
                    add(cuadro2);
             }
JTextField cuadro1,cuadro2;
}

1.  Ahora generamos una clase interna con el oyente y ponemos y ponemos el cuadro una como desencadenante.

       class A_lamina extends JPanel{
             public void paintComponent(Graphics g){//constructor       
                    super.paintComponent(g);
                    setBackground(Color.DARK_GRAY);
                    setLayout(null); //establecer diseño por defecto no
                    cuadro1=new JTextField();
                    cuadro2=new JTextField();
                    cuadro1.setBounds(100,50,150,20);
                    cuadro2.setBounds(100,90,150,20);
                    add(cuadro1);
                    add(cuadro2);
                    cuadro1.addFocusListener(new escucha());
             }
             JTextField cuadro1,cuadro2;      
             private Image foto;
private class escucha implements FocusListener{
public void focusGained(FocusEvent e) {System.out.println("estas dentro del cuadro 1");}
public void focusLost(FocusEvent e) {System.out.println("estas fuera del cuadro 1");}
}                             }
En la siguiente práctica realizaremos un marco al que le introduciremos una lámina con una foto de fondo y en la que pondremos dos cuadros de texto. Para posteriormente generar los eventos de foco, ratón, teclado

 

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
public class Practica_JText {
             public static void main (String[] arg) {
                    A_marco1 cuadro = new A_marco1();
                    cuadro.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             }
       }
       class A_marco1 extends JFrame{
             public A_marco1() {
                    setVisible(true);
                    setBounds(150, 150, 500, 300);
                    add(new A_lamina());
                    addWindowListener(new escucha2());
                    addWindowStateListener(new escucha2());                    
                    addKeyListener(new escucha2());
                    addMouseListener(new escucha2());
             }
       }
       class A_lamina extends JPanel{
             public void paintComponent(Graphics g){//constructor
                    super.paintComponent(g);
                    try { //tratamineto de excepciones, haz esto y si no catch
                           foto = ImageIO.read(new File("C:\\Users\\dagip\\Desktop\\BOGEER\\imagenes\\JAVA2.jpg"));//ruta relativa 
                           } catch(IOException e) {
                           JOptionPane.showConfirmDialog(null, "no esta la foto");
                           }
                           //escribimos la foto en nuestra lamina
                           g.drawImage(foto, 0, 0, null);
                    setBackground(Color.DARK_GRAY);
                    setLayout(null); //establecer diseño por defecto no
                    cuadro1=new JTextField();
                    cuadro2=new JTextField();
                    cuadro1.setBounds(100,50,150,20);
                    cuadro2.setBounds(100,90,150,20);
                    add(cuadro1);
                    add(cuadro2);
                    cuadro1.addFocusListener(new escucha());
             }
             JTextField cuadro1,cuadro2;      
             private Image foto;
       private class escucha implements FocusListener{
             public void focusGained(FocusEvent e) {System.out.println("estas dentro del cuadro 1");}
             public void focusLost(FocusEvent e) {System.out.println("estas fuera del cuadro 1");}
             }
       }
      
       class escucha2 implements WindowListener,WindowStateListener,MouseListener,ActionListener,KeyListener{

             public void windowStateChanged(WindowEvent e) {}
             public void windowActivated(WindowEvent e) {}
             public void windowClosed(WindowEvent e) {}
             public void windowClosing(WindowEvent e) {}
             public void windowDeactivated(WindowEvent e) {}
             public void windowDeiconified(WindowEvent e) {}
             public void windowIconified(WindowEvent e) {}
             public void windowOpened(WindowEvent e) {}
             public void keyPressed(KeyEvent e) {}
             public void keyReleased(KeyEvent e) {}
             public void keyTyped(KeyEvent e) {}
             public void actionPerformed(ActionEvent e) {}
             public void mouseClicked(MouseEvent e) {}
             public void mouseEntered(MouseEvent e) {}
             public void mouseExited(MouseEvent e) {}
             public void mousePressed(MouseEvent e) {}
             public void mouseReleased(MouseEvent e) {}
            
       }



Ejercicio 2 . Ahora generamos otro marco con dos botones y dos cuadros de texto, y cuando el usuario cambie el foco de un cuadro de texto al otro nos confirmará si el correo es correcto. Esto último lo podemos hacer gracias algunos métodos de la clase String.

import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Practica27_text {
       public static void main (String[] arg) {
             //cargar el frame
             Marco_1111 x =new Marco_1111();
             x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       }
}
class Marco_1111 extends JFrame{
       public Marco_1111() {
             setVisible(true);
             setBounds(150,150,800,390);
             add(new Lamina_1111());
            
       }
      
}
class Lamina_1111 extends JPanel{
       public  void paintComponent(Graphics g) {
             super.paintComponent(g);
             //cargar los botones en el frame
             JButton Boton1=new JButton ("cerrar"); 
             JButton Boton2=new JButton ("Abrir");
             add(Boton1); add(Boton2);
             Boton1.setBackground(Color.GREEN);
             Boton1.setBounds(600, 20, 80, 30);
             Boton2.setBackground(Color.GREEN);
             Boton2.setBounds(600, 55, 80, 30);
             // colgar imagen, para lo que necesitamos un tratamiento de excepciones
            
            
             try { Foto1=ImageIO.read(new File("C:\\Users\\dagip\\Desktop\\BOGEER\\imagenes\\JAVA2.jpg"));
                   
             } catch (IOException e) {
                    JOptionPane.showConfirmDialog(null, "la foto no esta en la ruta");              
             }
             g.drawImage(Foto1,0,0,null);
            
             c_t1= new JTextField();           c_t2= new JTextField();
             c_t1.setBounds(50,50,250,40);     c_t2.setBounds(50,100,250,40);
             add(c_t1);                                     add(c_t2);
             c_t1.addFocusListener(new EventosDEfoco());
       }
       JTextField c_t1,c_t2;
       Image Foto1;
       private class EventosDEfoco implements FocusListener{

            
             public void focusGained(FocusEvent e) {}

             public void focusLost(FocusEvent e) {
                    //para capturar el texto del cuadro getText()
                    String Correo = c_t1.getText();
                    boolean validador_arroba = false;
                    boolean validador_punto = false;
                    //ahora vamos a comprobar si el correo introducido es correcto
                    for (int i=0;i<Correo.length();i++) {
                           //recordar que cuando buscamos una letra serán comillas simples
                           if (Correo.charAt(i) == '@') {validador_arroba =true;}
                           if(Correo.charAt(i) == '.') {validador_punto = true;}
                    }
                   
                    if(validador_punto==false && validador_arroba==false) {
                           String remplazar=JOptionPane.showInputDialog(null, "le falta un punto en su correo", "ejemplo@eeee.es");
                           c_t1.setText(remplazar);                }
                    else if (validador_arroba==false && validador_punto == true) {
                           JOptionPane.showMessageDialog(null, "repasa si has puesto el @");
                    }
                    else if (validador_punto==false && validador_arroba == true) {
                           JOptionPane.showMessageDialog(null, "repasa si has puesto el punto");
                    }     
             }     
       }

}

No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital