Categorías: Java

Usar JoptionPane En Java

Hola mi querido visitante, aunque puedes usar un Jpanel en java, en este articulo te mostraré lo que es un cuadro de dialogo, las ventajas de usar este en una aplicación de Java, y como funcionan los distintos tipos de cuadros de cuadros de dialogo, aunque estos los podemos resumir en: Como usar JoptionPane en Java, ya que JoptionPane es la clase que provee los métodos necesarios para mostrar esos útiles mensajitos al usuario, sin la necesidad de tomar cursos online gratis 😉

Que Es Una Ventana De Dialogo En Java?

Me alegra que lo preguntes mi estimado visitante. Según la Wikipedia:

…»ventana que permite comunicación simple entre el usuario y el sistema informático.»

Para Que Sirve Un Cuadro De Dialogo en Java?

Los cuadros de dialogo (JOptionPane) son «herramientas» muy útiles al momento de ingresar datos y mostrar información; digo útil ya que con estas no necesitamos crear objetos de tipo BufferedReader y «tirar» más código para poder usar correctamente los datos que se ingresan como lo expliqué brevemente cuando explique sobre como ingresar datos en Java por consola.

Librerías Para Usar Cuadros De Dialogo En Java

Para poder poder usar estos cuadros de dialogo hay que importar la librería necesaria para que esta se ejecute, la cual es:

import javax.swing.JOptionPane;

También podemos hacer lo siguiente:

import javax.swing.*;

Con lo anterior cargaremos todas las librerías que contenga swing pero esto es innecesario ya que cargaremos librerías que no usaremos.

Tipos De Cuadros De Dialogo En Java

Entre los tipos de cuadros dialogo encontraremos: showConfirmDialog, showInputDialog, showMessageDialog y showOptionDialog. Los mas usados son los tres primeros. Ahora si, aprendamos a usar JoptionPane En Java.

showMessageDialog

Este cuadro de dialogo es ideal para mostrar información de cualquier tipo, este reemplaza el System.out.print(); La sintaxis es:

Ver Código showMessageDialog....
 JOptionPane.showMessageDialog(null, "Hola mundo!!!");

– Como observamos en la anterior linea, lo que va dentro de las «…» es el texto que deseemos mostrar, para estos mensajes también se puede usar la concatenación para mostrar el texto y variables a la misma vez.
– Lo que se ve al ejecutar la aplicación es lo siguiente:

showInputDialog

Este cuadro de dialogo es ideal para ingresar datos, hay que tener en cuenta que todo lo que se reciba se tomara como un String, pero esto no es problema para trabajar con otros tipos de datos, en tal caso es necesario convertir la cadena que se recibe en el tipo de dato que necesitemos (int, Float, double, etc). La sintaxis es las siguiente:

Ver Código showInputDialog....
String ax = JOptionPane.showInputDialog("Ingrese un numero: ");
JOptionPane.showMessageDialog(null, "El numero ingresado es: "+ax);

– En la linea 1 cree una variable de tipo String la cual llamé «ax», en esta variable almaceno el dato que se ingresa con el showInputDialog, al igual que el showMessageDialog lo que va dentro del «…» es el mensaje que mostramos al usuario.
– En la linea 2 muestro el dato que recibí atravez de la variable ax.
– Al ejecutarse la aplicación veremos lo siguiente:

showConfirmDialog

Este cuadro de dialogo es de tipo entero, por lo tanto hay que crear una variable de tipo int para manejar las opciones que este cuadro de dialogo ofrece, las anteriores son si, no, y cancelar; la sintaxis es la siguiente:

Ver Código showConfirmDialog....
int ax = JOptionPane.showConfirmDialog(null, "Estas en java?");
        if(ax == JOptionPane.YES_OPTION)
            JOptionPane.showMessageDialog(null, "Has seleccionado SI.");
        else if(ax == JOptionPane.NO_OPTION)
            JOptionPane.showMessageDialog(null, "Has seleccionado NO.");

– En la linea 1 se puede observar que cree una variable entera, el null que se antepone al mensaje es necesario, ya que este se toma cuando el usuario pulsa la tecla Esc o presiona Cancelar, el mensaje a mostrar se usa como en los anteriores cuadros de dialogo.
– En las lineas 2 y 4 se usan condicionales para tomar las acciones respectivas de acuerdo a la opción que haya dado el usuario.
– En las lineas 3 y 5 se muestran mensaje correspondientes a la respectiva opción que haya dado el usuario.

Si seleccionamos veremos el siguiente cuadro de dialogo:

Si por el contrario seleccionamos NO veremos el siguiente cuadro de dialogo:

Los anteriores son los cuadros de dialogo mas usados, ya que con estos podemos realizar cosas básicas pero muchas veces necesarias para el buen desarrollo de una aplicación. Cabe aclarar que lo anterior no es lo único que se puede hacer, pero lo mas avanzado lo explicare mas adelante 🙂

Para finalizar mostrare el codigo necesario para trabajar con números int, Float, Double, Long:

Mostrar Codigo
String ax = JOptionPane.showInputDialog(null,"");
        int a = Integer.parseInt(ax);//se convierte el dato a entero
        Float b = Float.parseFloat(ax);//se convierte el dato a flotante
        Double c = Double.parseDouble(ax);// se convierte el dato a double
        Long d = Long.parseLong(ax);//se convierte el dato a long

– Hay que tener en cuenta que lo anterior se hace con JOptionPane.showInputDialog y que en las «…» va el mensaje que deseamos mostrar al usuario para guiarlo en la operación.

Personalizar Opciones En Cuadro De Dialogo

Las anteriores ventanas de dialogo en Java nos proveen una serie de opciones predefinidas para que el usuario pueda escoger. Pero también podemos personalizar los cuadros de diálogos con nuestras propias opciones, para esto usamos showOptionDialog.

Para nuestras opciones personalizadas, tendremos que tener un arreglo de String, veamos el siguiente ejemplo:

Ver Código....
String[] opciones = {"Contento", "Triste", "Melancolico" };
        
        int opcion = JOptionPane.showOptionDialog(
                               null                             //componente
                             , "Como te siente hoy?"            // Mensaje
                             , "Opciones Personalizada"         // Titulo en la barra del cuadro
                             , JOptionPane.DEFAULT_OPTION       // Tipo de opciones
                             , JOptionPane.INFORMATION_MESSAGE  // Tipo de mensaje (icono)
                             , null                             // Icono (ninguno)
                             , opciones                         // Opciones personalizadas
                             , null                             // Opcion por defecto
                           );
        
        JOptionPane.showMessageDialog(null, "Ha escogido "+opciones[opcion]);

Espero que el anterior post haya sido de gran utilidad, cualquier duda, critica(de preferencia constructiva) favor plasmarlo como comentario.

Si te ha gustado el post, compártelo, regala un like ó comenta 😉

WP Dev JaGonzalez

Hijo, esposo y padre de un hermoso niño. Amante de los animales, la tecnología, informática y programación. Si tienes alguna duda, inquietud, comentario o deseas comunicarte directamente conmigo, puedes enviarme un correo electrónico a admin@jagonzalez.org

Ver comentarios

  • Muchas gracias, muy buena la info... pero me surge una duda...
    .
    Como hago para que cuando seleccione la YES_OPTION regrese al incio del programa y que cuando seleccione NO_OPTION me finalize
    .

    -----------incio--------------------
    String a = JOptionPane.showInputDialog("Ingrese un numero: ");
    JOptionPane.showMessageDialog(null, "El numero ingresado es: "+a);

    int b = JOptionPane.showConfirmDialog(null, "Deseas volver a ingresar otro numero?");

    if(b == JOptionPane.YES_OPTION)
    { //????
    }

    if(b == JOptionPane.NO_OPTION)
    { //???
    }
    ------------------------- Fin -----------------------
    .
    Gracias por la ayuda :)

    • Para esto tienes que usar un ciclo para controlar las iteraciones, mira el siguiente codigo:

      int a;
              String b;
              do{
                  b = JOptionPane.showInputDialog("Ingrese un numero: ");            
                  JOptionPane.showMessageDialog(null, "El numero ingresado es: "+b);
      
                  a = JOptionPane.showConfirmDialog(null, "Deseas volver a ingresar otro numero?");
      
              }while(a==JOptionPane.YES_OPTION);
      

      Espero sea de gran utilidad, recuerda, comparte el post si te ha servido ó gustado ;)

      • Amigo necesito ayuda mira quiero que confirme el nombre pero me tira un error en donde estoy mal

        import javax.swing.*;
        public class Cuento {

        public static void main(String args []) {
        int respuesta;
        String Name;
        JOptionPane.showMessageDialog(null,"Bienvenido");
        do{
        Name= JOptionPane.showInputDialog("Escribe tu nombre");
        repuesta=JOptionPane.showConfirmDialog(null, "Este es tu nombren>>"+Name+"<<");

        }while (respuesta == JOptionPane.NO_OPTION);
        }

        }

        • Hola @alan, el unico error importante que encontre fue el de el nombre de la variable de respuesta, cuando lo declaras esta bien escrito, pero el nombre que esta dentro del ciclo no es igual, por tanto estas usando una variable que no existe :P A esos errores se les conoce como "Errores de capa 8", osea, errores tontos cometidos por el programador (sin animo de ofenderte ;) ).

  • muy buen trabajo me ayudo en mucho gracias y me da gusto tu deseo por compartirnos tus conocimientos.

  • Hola, buen post era lo que estaba buscando y de paso encontre algo q no buscaba pero que me sirvio bastante, pero ahora tengo una pregunta...... se puede mostrar en un JOptionPane una tabla donde utilizo el System.out.Format ????

    soy estudiante de unillanos - villavicencio. buen aporte (Y)

    • Hola @r4z0rbl4ck, claro que si, ya sea un objeto o el texto formateado que desees lo puedes mostrar en un cuadro de dialogo, si algo creas una variable que vaya asignando lo que deseas mostrar var+= loquetengas; y listo ;)

      • Quiero mostrar lo siguiente en el cuadro de dialogo

        String leftAlignFormat = "|%-11d|%-10s|%-12d|%-15d| n";
        System.out.format("+-----------+----------+------------+---------------+ n");
        System.out.format("|Cuadrante | Registro | Velocidad | Multa |n");
        System.out.format("+-----------+----------+------------+---------------+ n");
        for (int c=0;c<cont;c++) {
        System.out.format(leftAlignFormat,vecc[c],vecreg[c],vecvel[c],vecmulta[c]);
        }
        System.out.format("+-----------+----------+------------+---------------+ n");

        System.out.println("La Suma de las multas es "+sumamult);

        como seria?

        • Seria algo como:

          
          String ax ="";
          
          ax += “|%-11d|%-10s|%-12d|%-15d| n” + “+———–+———-+————+—————+ n” + “|Cuadrante | Registro | Velocidad | Multa |n” + “+———–+———-+————+—————+ n”;
          
          for (int c=0;c
          
  • se puede hacer que lo que capture por el showInputDialog en el momento de ingresarlo se vea en forma de contraseña?

    • Hola mauro, claro que si, para ahorrar trabajo se usa un objeto de tipo JPasswordField, a continuación un ejemplo claro de esto:

      import javax.swing.JOptionPane;
      import javax.swing.JPasswordField;
      
      public class joptionPass {
          
          public static void main(String []args){
              
              JPasswordField pass = new JPasswordField(4);//campo que oculta la contraseña
              pass.setHorizontalAlignment(JPasswordField.RIGHT); //configuracion horientacion de escritura del texto
             
              int ax ;
              String passUser= "talCual", t;
              
              ax = JOptionPane.showConfirmDialog(null, pass, "CONTRASEÑA", JOptionPane.WARNING_MESSAGE);
              
              if(ax == JOptionPane.YES_OPTION){
                  t = String.valueOf(pass.getPassword());//se convierte a string lo que se recibe en el cuadro de dialogo
                  if(t.equals(passUser))//se compara si coicide lo que se incresa con la contraseña
                      JOptionPane.showMessageDialog(null, "Contraseña Correcta");
                  else
                      JOptionPane.showMessageDialog(null, "Contraseña invalida", "", JOptionPane.ERROR_MESSAGE);
              }
              else
                  System.exit(0);
              
          }   
      }

      Espero te sirva ;) Recuerda que compartir, dar likes ó +1 es gratis :)

  • Hola!! Muchas gracias por tu post, me ha sido de mucha ayuda.
    Igual estudio ISC pero yo soy de México, es padrísimo como por estos medios podemos convivir de esta manera.
    Espero estés muy bien.
    Saludos!!! :)

  • Hola @LuisEnrique, el blog esta para orientar mas no para hacer los trabajos, mas sin embargo te interesara ver el siguiente post, ya que allí se muestra un ejemplo practico de una calculadora básica con los requerimientos tuyos. Espero te sirva ;)

Compartir
Publicado por
WP Dev JaGonzalez

Entradas recientes

iPhone Hackeado: Qué Hacer para Proteger tu Dispositivo y Asegurar tu Seguridad

¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…

2 semanas hace

Cómo Restablecer un iPhone a su Estado de Fábrica

Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…

3 semanas hace

Motorola planea lanzar al menos dos nuevos teléfonos Moto G en septiembre

Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…

1 año hace

El equipo de WizardLM afirma que un modelo de IA de terceros les robó el trabajo

Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…

1 año hace

Las fallas del complemento Jupiter X Core amenazaron a 172.000 sitios web con apropiaciones de cuentas

Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…

1 año hace

Consola portátil Xbox: aquí tienes todo lo que necesitas saber al respecto

Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…

1 año hace