cuadros de dialogo en java

Usar JoptionPane En Java

Encuentra en el sitio

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:

– 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:

JOptionPane.ShowMessageDialog.....

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:

– 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:

– 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:

– 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.

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:

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 😉

Resumen
Fecha Publicación
Resumen articulo
Aprende a Usar JoptionPane En Java, un uso bastante importante para capturar y mostrar datos de forma rápida y sencilla.
Calificación
51star1star1star1star1star
  1. Avatar for belial9826 JuanMa dice:

    Alguien sabe cómo modificar, eliminar, y listar registros de un ArrayList creados en un TextField en swing de Java?
    Muchas gracias, saludos muy cordiales.

  2. Avatar for belial9826 Jose López dice:

    Hola, muchas gracias por la enseñanza, aprendí mucho, me gustaría que me incluyan en esta página.

    Gracias.

    José Maria López

  3. Avatar for belial9826 Brayhan dice:

    Muy bueno, gracias…!!

  4. Avatar for belial9826 WAi dice:

    Muy bueno!!!!!

  5. Avatar for belial9826 Luis Valle dice:

    Muchas gracias, perfecta explicación, me ha sido de gran ayuda!

  6. Avatar for belial9826 Carlos dice:

    Muchas gracias por la explicación. fue concisa y pude entender bien todo.

  7. Avatar for belial9826 Wilson T dice:

    Buenas noches. me puedes ayudar con un dato. al compilar me indica error en la linea ( NumeroA = JOptionPane.showInputDialog(null,”Digite el primer numero”);)
    Podrias por favor indicarme por que?
    Gracias muchas. este es el pedacito de codigo

    import javax.swing.JOptionPane;

    public class mensaje
    {
    String NumeroA; //
    String NumeroB; //
    public static void main (String[]arg)
    {
    JOptionPane.showMessageDialog(null,”Realiza un programa con\n los operadores aritméticos +, -, * y /”);
    NumeroA = JOptionPane.showInputDialog(null,”Digite el primer numero”);
    Int NumeroA = Integer.parseInt(NumeroA);
    NumeroB = JOptionPane.showInputDialog (null,”Digite el segundo numero”);
    Int NumeroB = Integer.parseInt(NumeroB);
    suma = (NumeroA + NumeroB);
    JOptionPane.showMessageDialog (null,”El resultado de la Operacion es\n”+ suma);
    System.exit (0);
    }
    }

    1. Avatar for belial9826 jioxep dice:

      buenas Wilson T.
      pasé viendo esta página y vi tu problema, lástima que ya debes haberlo solucionado..
      el problema es que tenés declarada la variable NumeroA 2 veces..
      como String NumeroA e int NumeroA..(lo mismo pasa con NumeroB).

      prodrías haber declarado directamente así:
      int NumeroA;

      NumeroA=Integer.parseInt(JOptionPane.showinputDialog(null,”Digite el primer numero”));

      un saludo!!

    2. Avatar for belial9826 Jose Luis Torres dice:

      Es por que no es parte de la clase String para poder usarlo en una sola linea ingresa esto para el ingreso de datos

      int num1 = Integer.parseInt(JOptionPane.showInputDialog(“Ingresa el primer numero”,”Numero 1″));
      int num2 = Integer.parseInt(JOptionPane.showInputDialog(“Ingresa el segundo numero”,”Numero 2″));

  8. Avatar for belial9826 fernanda dice:

    gracias por la informacion me sirvio mucho

  9. Avatar for belial9826 fernanda dice:

    muchas gracias

  10. Avatar for belial9826 Jesus Fonseca dice:

    Buenas Tengo una consulta como hago para que mi programa cuando le de salir, muestre el mensaje Hasta luego , salga y me repita Me repita de nuevo el programa….

    Aca el Codigo:

    —————————————————————————————

    package proyecto_anaim;

    import java.util.Scanner;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import javax.swing.JOptionPane;
    /**
    *
    * @author Jesus
    */
    public class Proyecto_AnaIM {

    public static void main(String[] args) {

    Scanner entrada = new Scanner(System.in);//Para almacenar una entrada mediante el teclado

    int filas = 14;//Declaro que sean 14 filas
    int columnas = 12;//Declaro que sean 12 columnas
    int M[][] = new int[filas][columnas];//Creo un arreglo de 14filas y 12columnas
    boolean seguir = true;//variable lógica (1 o 0)
    int n;
    String continuar=””;
    for (int i = 0; i < filas; i++) {
    for (int j = 0; j < columnas; j++) {
    M[i][j] = 0;
    }//Fin del for j
    }//Fin del for i

    //Inicia el While
    while (seguir) {

    //AQUI ESTA LA FECHA
    Date date = new Date();
    DateFormat hourdateFormat = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy");
    //System.out.println("— Hora y Fecha: "+hourdateFormat.format(date)+" —");

    //AQUI TERMINA LA FECHA

    //Aqui muestra El menú

    //Primero me Muestra la Fecha
    //Desspues El Menú
    //Y por ultimo Seleccione la opcion
    JOptionPane.showInputDialog(null, "\"— Hora y Fecha:"+hourdateFormat.format(date)+ " —\"\n——————-Menú De Asientos——————- \n Digite El Numero Donde Prefiere Reservar \n—————————————————————\n1. Momentos VIP A \n2. Momentos VIP B \n3. Platea Preferencial C \n4. Platea Preferencial D \n5. Asientos Para Personas Con Discapacidad \n6. Graderia General \n7. Salir\n—————————————————————\n—————————————————————\nDigite el número acá:" );
    n = entrada.nextInt();//La entrada a la opción
    //Inicia el Switch
    switch (n) {

    //Inicia el Caso 1(Momentos VIP A)
    case 1: {

    break;
    }//Termina el case 1

    //Inicia el Caso 2(Momentos VIP B)
    case 2: {

    break;
    }//Termina el case 2

    //Inicia el Case 3(Platea Preferencial C)
    case 3: {

    break;
    }//termina el case 3

    //Inicia el Case 4(Platea Preferencial D)
    case 4: {

    break;
    }//termina el case 4

    //Inicia el Case 5(Asientos Para Personas Con Discapacidad)
    case 5:{

    break;
    }//Termina el case 5

    //Inicia el Case 6(Gradería General)
    case 6:{

    break;
    }//Termina el case 6

    //Inicia el Case 7(Salir)
    case 7:{
    JOptionPane.showInputDialog(" Hasta Luego ");
    seguir = false;
    break;

    }//Termina el case 7

    //Si la Opcion es incorrecta se va a al default
    default:
    System.out.println("Digitó un número incorrecto\n\n\n");
    }//Termina el switch n

    }//Termina el while seguir
    }//Termina el Main
    }//Fin de la clase

  11. Avatar for belial9826 joshua zulett dice:

    wow muchas gracias si que me sirvio quizas no tienes por ahi un tutorial de interfases graficas

  12. Avatar for belial9826 Alejandro Almazan dice:

    como puedo hacer un pseudocodigo para que el usuario ingrese las medidas se un triangulo…
    por favor necesito de su ayuda

  13. Avatar for belial9826 JHON MEDINA dice:

    HOLA AMIGO ESTOY HACIENDO UNA ACTIVIDAD DE JAVA PERO NO SE COMO HACER PARA BUSCAR EN UN ARYLIST
    TENGO ESTO:
    1: CLASE ATLETA:
    package actividad_atleta;

    import java.util.ArrayList;

    public class Atleta {

    String nombre;
    String nacionalidad;
    double tiempo;

    public Atleta(String nombre, String nacionalidad, double tiempo) {
    this.nombre = nombre;
    this.nacionalidad = nacionalidad;
    this.tiempo = tiempo;
    }

    public static ArrayList Latletas = new ArrayList();

    }

    2: COMPETENCIAS:

    package actividad_atleta;

    import javax.swing.JOptionPane;

    public class competencias {

    public static void r_atleta(){
    int cont=0;
    double tiempo = Double.parseDouble(JOptionPane.showInputDialog(null, “Ingrese el tiempo:\n “, “Registro”, JOptionPane.INFORMATION_MESSAGE));
    String nombre = JOptionPane.showInputDialog(null, “Ingrese Nombre:\n “, “Registro”, JOptionPane.INFORMATION_MESSAGE);
    String nacionalidad = JOptionPane.showInputDialog(null, “Ingrese Pais:\n “, “Registro”, JOptionPane.INFORMATION_MESSAGE);

    if (tiempo <= 0 ){
    JOptionPane.showMessageDialog(null, "Falto Tiempo", "Registro", JOptionPane.ERROR_MESSAGE);

    }else {
    cont++;
    }

    if (nombre.length()<1){
    JOptionPane.showMessageDialog(null, "Falto Nombre", "Registro", JOptionPane.ERROR_MESSAGE);
    }else {
    cont++;

    }

    if (nacionalidad.length()<1){
    JOptionPane.showMessageDialog(null, "Falto Pais", "Registro", JOptionPane.ERROR_MESSAGE);
    }else {
    cont++;
    }

    if (cont == 3){
    Atleta at= new Atleta(nombre, nacionalidad, tiempo);

    Atleta.Latletas.add(at);
    JOptionPane.showMessageDialog(null, "El atleta se ha registrado correctamente",
    "Informacion" , JOptionPane.INFORMATION_MESSAGE);
    System.out.println(at.nombre);
    System.out.println(at.nacionalidad);
    System.out.println(at.tiempo);

    String repit = JOptionPane.showInputDialog(null, "Coloque en mayuscula\nNuevo Atleta: N\n"+"Regresar al Menu: V" );

    if (repit.contains("N") || repit.contains("n")){
    r_atleta();
    }
    if(repit.contentEquals("V") || repit.contains("n")){

    new Principal().setVisible(true);

    } else if (repit.contentEquals("")){
    JOptionPane.showMessageDialog(null, "No selecciono una opcion\n ", "Error", JOptionPane.ERROR_MESSAGE);

    new Principal().setVisible(true);

    }

    }

    }

    public static void d_campeon(){

    }

    }

    3: ESTO QUE LO TENGO COMO INTERFAZ:

    1 BOTON REGISTRAR ATLETA
    2 DATOS DEL CAMPEON
    3 ATLETAS POR PAIS
    4 TIEMPO PROMEDIO DE TODOS LOS ATLETAS

    EL DE REGISTRAR ATETA CREO Q ME FUNCIONA, PERO NO SE COMO HACER PARA BUSCAR ESO QUE YA DIGITE CUANDO LE DE CLIC A LAS OTRAS OPCIONES

  14. Avatar for belial9826 Jesus dice:

    Cuando ejecuto sale el cuadro pero al momento de elegir la opcion desaparece todo
    package Prueba;
    import java.util.Scanner;
    import AbstractFactory.DesignFactory;
    import AbstractFactory.ServicioFactory;
    import AbstractFactory.ServicioInformatico;
    import AbstractFactory.SoftwareFactory;
    import AbstractFactory.WebsiteFactory;
    import javax.swing.JOptionPane;

    public class Principal {

    private static Scanner S = new Scanner(System.in);
    public static void main(String[] args) {

    int opcion = 0;
    String op = “”;
    do{
    opcion=Integer.parseInt(JOptionPane.showInputDialog(null,
    ” ELIJA UNA OPCION \n”
    +”1.Solicitar servicio de diseño grafico.\n”
    +”2.Solicitar desarrollo de software educacional.\n”
    +”3.Solicitar creacion de sitios web.\n”
    +”4.Cerrar Programa.\n”
    +”Ingrese una opcion [1-4]”,”MENU DE OPCIONES”,JOptionPane.QUESTION_MESSAGE));
    opcion = preguntarServicio();

    switch (opcion){

    case 1:
    usarServicio(new DesignFactory());
    break;
    case 2:
    usarServicio(new SoftwareFactory());
    break;
    case 3:
    usarServicio(new WebsiteFactory());
    break;
    case 4:
    JOptionPane.showMessageDialog(null, ” CERRAR PROGRAMA”);System.exit(0);break;
    default: JOptionPane.showMessageDialog(null,” Elija una opcion valida “);
    System.out.println(” Se ha ingresado una opcion invalida. “);
    }
    System.out.print(“\n”);
    }while (opcion!=4);

    }

    public static void usarServicio(ServicioFactory factory){
    ServicioInformatico servicio = factory.crearServicio();
    servicio.asignarTrabajo();
    servicio.indicarFechaEntrega();
    servicio.informarSobrePago();
    }

    public static int preguntarServicio(){

    return Integer.parseInt(S.nextLine());
    }

  15. Avatar for belial9826 juan dice:

    hola como puedo hacer para tener un metodo en el cuadro de confirmación, que al precionar si me mande el metodo

  16. Avatar for belial9826 Alejandrita Mora dice:

    como pudiera utilizar el el JOptionPane, para mostrar al usuario cuantos turnos le tomó para adivinar el número y el número que había generado, en este programa
    import java.util.*;
    public class AdivinarNumero
    {
    public static void main(String[] args)
    {

    int valorBuscar=0;
    EntradaDeTeclado teclado= new EntradaDeTeclado();
    Random cantidadDeNumero=new Random();
    boolean intentos=true;
    for(int i=0;i<=1;i++)
    {
    valorBuscar=cantidadDeNumero.nextInt((100-1+1)+1);
    }
    System.out.println(" EMPECEMOS EL JUEGO ");
    System.out.println("SE HA GENERADO UN NUMERO ALEATORIO COMPRENDIDO ENTRE 1 Y 100\n");
    do
    {
    System.out.println("INTRODUSCA EL VALOR HA BUSCAR: ");
    teclado.pedirEntrada();
    int convertir=Integer.parseInt(teclado.getEntrada());
    if(convertir==(valorBuscar))
    {
    System.out.println("BIEN… HAS ACERTADO AMIGO :)");
    intentos=false;
    }
    else if(convertir=valorBuscar)
    {
    System.out.println(” NO HAS HACERTADO EL NUMERO ES MENOR. INTENTALO DE NUEVO AMIGO:\n”);
    intentos=true;
    }
    } while(intentos);

    }
    }

  17. Avatar for belial9826 EDWIN dice:

    Muy buena informacion. Solo una pregunta se puede hacer botones en forma de loista

  18. Avatar for belial9826 carlos dice:

    Excelente informacion

  19. Avatar for belial9826 carlos dice:

    hola disculpa quisiera saber como cambiarle el icono por defecto y ponerle uno personalizado

  20. Avatar for belial9826 Ryck dice:

    Muchas gracias, me ayudo bastante.
    Excelente explicación.

  21. Avatar for belial9826 Claudia dice:

    Hola, mi problema es que me sale “unused import”,por lo tanto no reconoce cunado importo javax.swing.

    1. Avatar for belial9826 Anonimo dice:

      es javax.swing.*;
      o javax.swing.JOptionPane;

      1. Avatar for belial9826 belial9826 dice:

        Ambos, pero con la segunda opción cargas solo esa librería especifica, es decir, si solo vas a usar cuadros de dialogo, es mejor usar la segunda linea 😉

  22. Avatar for belial9826 pablo dice:

    podrias ayudarme a realizar este programa, en java por que no me resulta

    confeccione un programa para multas de 10 personas que mediante el siguiente menu
    realice lo siguente MENU MULTAS
    1)INGRESE DATOS DE LAS MULTA
    2)IMPRIMA LA CANTIDAD DE MULTAS POR DISCO PARE
    3)IMPRIMA LA CANTIDAD DE MUJERES MULTADAS MAYORES DE 30 AÑOS
    4) IMPRIMIR LA CANTIDAD DE HOMBRES MULTADOS
    5)IMPRIMIR PORCENTAJE DE HOMBRES Y MUJERES MULTADOS
    6)IMPRIMIR CANTIDAD DE HOMBRES MAYORES A 50 AÑOS CON MULTAS POR MAL ESTACIONAMIENTO
    7) SALIR

    OBSERVACIONES SON 10 PERSONAS MULTADAS
    1) INGRESE DATOS DE MULTA : DEBERA CONTENER LOS SIGUIENTES DATOS
    TIPO DE MULTA,SEXO Y EDAD
    TIPO DE MULTA TENDRA 1) DISCO PARE 2) MAL ESTACIONAMIENTO .
    SEXO TENDRA H)HOMBRES M)MUJERES
    ESTOS DEBEN SER ALMACENADOS EN 3 ARREGLOS (TIPO DE MULTA ,SEXO Y EDAD)

Deja un comentario