Mostrando entradas con la etiqueta Formulario. Mostrar todas las entradas
Mostrando entradas con la etiqueta Formulario. Mostrar todas las entradas

jueves, 5 de julio de 2012

Formulario Modal y OptionPane

Formulario Modal
¿Que es un formulario Modal?
Es cuando una ventana retiene el foco sobre si misma impide que se trabaje sobre las demás ventanas, hasta que se elija alguna de las opciones disponibles dentro de ella.

Ejemplo: Cuando un procesador de texto pregunta si deseamos Guardar, hasta que elijamos "Guardar", "No Guardar" o "Cancelar" podremos manipular las otras ventanas.

¿Como podemos hacerlo en Java?
Pues existen varias formas (cada persona puede generar distintas formas de hacerlo) pero ahora explicare una de ella.

En java existe
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
ó
this.setDefaultCloseOperation(javax.swing.WindowConstants. EXIT_ON_CLOSE );

para el caso hacen la misma acción (a un que la ultima importa la librería y la primera ya ha sido hecha), automatiza la acción de cerrar, pues la quita de memoria, es decir la cierra, si no la colocáramos esto haría que el formulario solo se ocultaría, dejaría de ser visible pero a un en ejecución.

Pero lo que necesitamos es que el botón cerrar desencadene una acción por lo cual debemos programar la acción cerra y dejarla de la siguiente forma

this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

el cual no hará nada, no cerrara el formulario, por lo cual debemos usar un

this.addWindowListener(new WindowListener() )

el cual dará un error si utilizamos un editor(Netbeans) por lo cual solo veremos lo que indica el error y no sugerirá colocar los métodos abstractos, y aceptaremos la propuesta esto nos generar el código faltante, esta únicamente modificaremos windowsClosing(Windows Event e) y colocaremos un JOptionPane.showConfirmDialog para preguntar, o si lo deseamos podemos personalizar a un más utilizando un JOptionPane.showOptionDialog.

            @Override

            public void windowClosing(WindowEvent e) {
                int Confirmar= JOptionPane.showConfirmDialog(JL,"¿Realmente deseas cerrar?","Cerrar",JOptionPane.YES_NO_OPTION);
                if (JOptionPane.OK_OPTION==Confirmar){
                cerrar();
                }
            }
_______________________________________________
¿Como creas mensajes de texto en java?
Para esta tarea utilizamos JOptionPane esta tiene muchas variantes, las cuales veremos a continuación (ver código). con esto podemos enviar mensajes de confirmación, incluso pedir información con JOptionPane.showInputDialog o personalizar con JOptionPane.showOptionDialog, su aplicación es meramente sintáctica, por lo que la forma mas fácil de aprender a utilizarlas es la practica,
_______________________________________________

    public  void cerrar(){
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

Para tener una idea mas general presentare JOptionPane, para poder practicar y ver varias opciones que ofrece esta librería. Lo puedes visualizar descargando el código



__________________________________________________________________________
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.*;

/**
 *
 * @author Marco
 */
public class FormularioDeseaCerrar extends JFrame implements ActionListener{
    JButton JB1, JB2, JB3, JB4;
    JLabel JL;
    public  void cerrar(){
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
FormularioDeseaCerrar(){
    super("¿Desea cerrar?");
    JPanel Jp= new JPanel();
    this.add(Jp);
    JB1=new JButton("Mensaje");
    Jp.add(JB1);
    JB2=new JButton("Mensaje de entrada");
    Jp.add(JB2);
    JB3=new JButton("Mensaje de combo");
    Jp.add(JB3);
    JB4=new JButton("Confirmación");
    Jp.add(JB4);
    JL= new JLabel("Etiqueta                         ");
    Jp.add(JL);
    Jp.setLayout(new FlowLayout());
    JB1.addActionListener(this);
    JB2.addActionListener(this);
    JB3.addActionListener(this);
    JB4.addActionListener(this);
     this.setVisible(true);
     this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);//El boton cerra no hara nada(no cierra)
     this.setLocationRelativeTo(null);//Centra el formulario en la pantalla
    //Lo siguiente sera para modificar el comportamiento para cerrar el formulario y lanzar nuestra ventana de forma modal
     this .addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void windowClosing(WindowEvent e) {
                int Confirmar= JOptionPane.showConfirmDialog(JL,"¿Realmente deseas cerrar?","Cerrar",JOptionPane.YES_NO_OPTION);
                if (JOptionPane.OK_OPTION==Confirmar){
                cerrar();
                }
            }

            @Override
             public void  windowClosed(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowIconified(WindowEvent e) {
            //    throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowDeiconified(WindowEvent e) {
              //  throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowActivated(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
             public void  windowDeactivated(WindowEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }
        });
    this.pack();
}
     public static void   main(String[] args) {
        new FormularioDeseaCerrar();
    }

    @Override
    public void  actionPerformed(ActionEvent e) {
        if (e.getSource()==JB1){
        int seleccion = JOptionPane.showOptionDialog(this,"Selecciona una opción","Selecciona",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,new Object[]{"Aceptar","No","Cancelar"},"Aceptar");    
         this .setTitle(null);
        switch (seleccion){
            case 0:
               JL.setText("Selecciono Aceptar");
                break;
            case 1:
                JL.setText("Seleccion No");
                break;
            case 2:
                JL.setText("Selecciono Cancelar");
                break;
        }
        }
        if (e.getSource().equals(JB2)){
            String Texto = JOptionPane.showInputDialog(this,"Por favor ingrese sus datos",JOptionPane.QUESTION_MESSAGE);
            JL.setText(Texto);
        }
        if (e.getSource().equals(JB3)){
            Object Texto1 = JOptionPane.showInputDialog( this ,"Seleccione una opcion", "Selección",JOptionPane.QUESTION_MESSAGE,null,new Object[]{"Opcion 1","Opcion 2","Opcion 3"},"Opcion 1");
            JL.setText(Texto1+"");
        }
        if (e.getSource().equals(JB4)){
            int confirmado = JOptionPane.showConfirmDialog( this ,"¿Lo confirmas?");
            if (JOptionPane.OK_OPTION == confirmado)
                JL.setText("Confirmado");
            else
                JL.setText("No borrare nada");
        }
    }
}
__________________________________________________________________________

La aplicación ya en ejecución.





jueves, 17 de mayo de 2012

Hagamos un formulario en java

Notas sobre java



Comencemos a programar en java, te recomiendo leer algún manual sobre java u orientado a programación orientada a objetos. Yo iré directo a los ejemplos.


  • Necesitaremos jdk
  • Un Wizard (asistente) este puede ser Netbeans, esto puede ser opcional. Pero la verdad facilita mucho el programar, lo hace menos tedioso.
Lo pueden descarga todo de la pagina de Oracle 

Bueno es hora de crear nuestro primer formulario:

Primer Proyecto en Netbeans

Lo primero que debemos hacer es crear nuestro primer proyecto en Netbeans.

Clic al botón resaltado de rojo
En categorías es coges java y proyectos (lado derecho) Java Application, clic en siguiente

Le agregas un Nombre a tu proyecto, en mi caso FormularioBasico, clic en Terminar

Listo tenemos nuestro proyecto, ahora programaremos


Primer Formulario en Netbeans

En netbenas existen formularios pre-fabricados, bueno pero ahora eso no nos interesa, ahora crearemos uno desde cero, solo con la clase que ya nos ha generado Netbenas, no profundizare mucho en los conceptos.

El siguiente seria el código ya implementado y con comentarios (de gris), este es solo una forma de hacerlo abajo explicare otra forma de generar un formulario.
__________________________________________________________________________


import javax.swing.JFrame; //Importamos la librería

/**
 * @author MaXr
 */
public class FormularioBasico extends JFrame{ //Extendemos a JFrame
    /**para heredar metods y atributos del JFrame    
     * para eso usamos "extends"
     *Crearemos nuestro metodo con el mismo nombre que la clase "FormularioBasico"
     */
    public FormularioBasico(){
    /* Utilizaremos el constructor super(Nombre de mi formulario)
     * this  se utiliza para hacer referencia al formulario
     */ 
        super("Mi Formulario");
        this.setSize(500, 500); //SetSize(Ancho, largo) sirve para darle el tamaño al formulario
        //Tambien puedes usar "this.pack;" funciona cuando ya tienes controles, automaticamente
        //se redimensiona el JFrame
        this.setVisible(true);//SetVisible(boolean)-- es para que se vea o este oculto el formulario
        //Si no se coloca como true no se mostrara en pantalla y netbeans automaticamente la finaliza
        this.setDefaultCloseOperation(EXIT_ON_CLOSE); //Esto servira para poder cerra tu aplicación
        //si no lo colocas utilizara por default dispose que solo lo quita de la pantalla, pero sigue
        //en ejecución
        this.setLocationRelativeTo(null);//Centramos el formulario, pues por default
        //aparece de lado superior izquierdo
     
    }
    public static void main(String[] args) {
        // En esta parte es donde se ejecutara es el método principal
        new FormularioBasico(); //llamo a mi metodo, new es un constructor crea a mi metodo
        //Noten que este metodo es estático 
    }
}
__________________________________________________________________________


Lo puedes descargar de aqui (Archivo, Descargar, para que baje completo)... Ojala les sirva.. mas adelante publicare otra forma para crear el fomulario.. difiere un poco del actual.. He iremos aprendiendo a colocar controles y a utilizar los layout..

Por favor deja tu comentario así creceremos en conocimiento y podre corregir mis errores.

Hasta la próxima..