Sunteți pe pagina 1din 7

JOptionPane.

showInputDialog();
En esta ocasin aprenderemos a utilizar la clase JOptionPane en nuestros programas,
esta clase genera cuadros de dialogo para pedir datos a un usuario o para arrojar un
cuadro de dialogo de aviso. Son de gran utilidad, ya que en la mayora de los programas
se necesita pedir datos al usuario para que el programa realice la tarea que se le
program. Hasta ahora nosotros como programadores hemos asignado los datos (los
valores) a nuestra variables para que nuestro programa trabaje con ellas, pero ahora
haremos que el usuario del programa le de esos valores de manera directa sin necesidad
modifiquemos
nuestro
valor
de
variable
para
cada
problema
diferente.
A continuacin un cdigo de ejemplo:

Pedir un nombre al usuario


view plainprint?

1.

//Archivo: PruebaJOption.java

2.
3.

import javax.swing.JOptionPane;

4.
5.

public class PruebaJOption{

6.
7.

public static void main(String args[]){

8.
9.

String nombre;

10.

nombre = JOptionPane.showInputDialog("Cual es tu nombre?");

11.
12.
13.
14.

System.out.println("Hola "+nombre);
}
}

Este es un programa sencillo que pide datos al usuario, en este caso, le pide el nombre al
usuario, este programa solo saluda al usuario, osea imprime una linea de texto con el
mensaje "Hola" seguido del nombre que el usuario introduzca.
Para poder usar la clase JOptionPane necesitamos importar la librera donde se
encuentra esa clase a nuestro programa, esto lo hacemos en la linea numero 3. Despues
declaramos nuestra clase, nuestro main, y en la linea 9 declaramos una variable String
nombre. En la linea 10 empieza lo interesante ya que estamos asignndole el valor a
nuestra variable nombre; Convencionalmente como lo habamos hecho anteriormente
para asignarle un valor a nuestra variable nombre solo escribiramos en nuestro cdigo la
variable nombre y asignarle algn nombre cualquiera, por ejemplo: nombre="Alberto";.
Pero con el uso del JOptionPane.showInputDialog(), java arroja una ventana donde hay
una caja de texto el la cual el usuario ingresara su nombre. En nuestra instruccin nombre
= JOptionPane.showInputDialog("Cual es tu nombre?"); de la linea 10 estamos

indicando que se abra una cuadro de dialogo que diga "Cual es tu nombre?" y que tenga
una caja de texto para que el usuario pueda escribir la respuesta a esa
pregunta ah. Aparecer una ventana mas o menos as:

El usuario ingresara su nombre y pulsara el botn "Aceptar", supongase que el usuario


ingreso el nombre "Adam", entonces ese nombre que introdujo el usuario al momento de
pulsar "Aceptar" se guardara en nuestra variable String nombre para ser usada por
nuestro programa para realizar sus tarea u operaciones. Despus de lo anterior nuestra
variable nombre contiene la cadena de caracteres "Adam", y en la linea 12 imprime el
mensaje "Hola" ms lo que contiene nuestra variable nombre, por tanto se mostrara en
pantalla
el
siguiente
texto: "Hola
Adam", ah finaliza
este
programa.

Pedir datos numricos al usuario para realizar


operaciones matemticas.
Para realizar clculos con datos proporcionados por el usuario, es muy sencillo, un tanto
similar a lo que se hizo anterior mente, solo que hay que tomar en cuenta algunas cosas.
Hay
que
tomar
en
cuenta
y
dejar
muy
en
claro
que
la instruccin JOptionPane.showInputDialog(); siempre nos retornara una cadena de
caracteres (un String), por eso siempre que utilicemos esa instruccin tenemos que
guardar su resultado en una variable de tipoString, que ya debi haber sido declarada
anteriormente (como en el primer cdigo). De tal modo que si nosotros queremos que el
usuario introduzca un numero para hacer alguna operacin, se guardara lo que el usuario
introdujo
en
formato
de
cadena
de
caracteres.
Es obvio pensar que con cadenas de caracteres no se pueden realizar clculos, pero si el
usuario introduce un numero en la caja de texto, como ya mencionamos, este se guardara
como texto y no como un cifra matemtica. Para esto java tiene una instruccin que
convierte cadena de caracteres a nmeros o cifras matemticas con la que se pueden
realizar operaciones; veamos el siguiente codigo:
view plainprint?

1.

//Archivo: PruebaJOption.java

2.
3.

import javax.swing.JOptionPane;

4.
5.

public class PruebaJOption{

6.
7.

public static void main(String args[]){

8.
9.

String numero1;

10.

String numero2;

11.

numero1 = JOptionPane.showInputDialog("Introduce un numero entero:");

12.

numero2 = JOptionPane.showInputDialog("Introduce un numero con punto decimal:");

13.
14.

int num1;

15.

double num2;

16.

num1 = Integer.parseInt(numero1);

17.

num2 = Double.parseDouble(numero2);

18.
19.

double suma = num1+num2;

20.
21.
22.
23.

System.out.println("La suma es: "+suma);


}
}

Este programa le pedir al usuario 2 nmeros, uno entero y uno con decimales, y
posteriormente sumar esos nmeros y mostrara en pantalla el resultado de esta suma.
Para pedir
los nmeros declaramos 2
variables de tipo String a las que
llamaremos numero1 y numero2,
posteriormente
en
la
linea
11
usando
elJOptionPane pedimos el primer numero (el numero entero) al usuario y lo que escriba
el usuario se guardara en la variable numero1, despus pedimos el segundo numero (el
numero con punto decimal) y lo que retorne de esa instruccin se guardara en la
variable numero2; Bien, ya tenemos los datos que el usuario introdujo a nuestro programa
y esos son los datos necesarios para que nuestro programa pueda realizar su tarea, pero
tenemos estos datos (los nmeros que introdujo el usuario) como cadena de
caracteres as que aun no podemos realizar clculos matemticos con ellos.
En las lineas 14 y 15 declaramos int num1 (una variable de tipo entero) y int num2 (una
variable de tipo numero con decimal) respectivamente. Debido a que vamos a convertir
a nmeros matemticos las variables: numero1 que convertiremos a int y numero2 que
convertiremos en double.
Pasando
a
la
linea
16
hacemos
la conversin de numero1 en
un int con
la instruccin num1
=
Integer.parseInt(numero1); esta instruccin indica
que
convierta a un numero en formato int lo que contiene la variable de tipoString
numero1 y que el resultado lo guarde en la variable int num1. En la linea 17, num2 =
Double.parseDouble(numero2); indicamos que convierta lo que contiene la

variable numero2 a un nmero en formato double y que lo guarde en la variable double


num2. Ahora si ya tenemos nuestros datos en un formato de cifras matemticas con los
cuales podemos realizar clculos.
En la linea 19 declaramos una variable suma de tipo double y le asignamos lo que resulte
de la suma de lo que contengan las variables num1 y num2. Y ya por ultimo solo tenemos
que mostrar el resultado final de la tarea que realizo nuestro programa, imprimimos en
pantalla un mensaje de texto que diga: "La suma es: ", seguido de nuestra
variable suma que contiene el resultado de la operacin, y termina nuestro programa.

Null, cuando el usuario presiona


el botn "Cancelar"
Cuando el usuario al momento de que le salga el cuadro de dialogo pidiendo el dato no
introduce nada y da "Aceptar" lo nico que hace es mandar una cadena de caracteres
sin ningn caracter, osea una cadena en blanco, pero aunque sea una respuesta que no
tiene letras ni nmeros AUN SIGUE SIENDO UNA CADENA DE CARACTERES, de tal
manera que en el primer programa imprimir el mensaje "Hola" seguido de lo que
contenga nuestra variable nombre, pero como nombre no contendr ningun caracter, la
salida
en
pantalla
solo
se
vera
como:
"Hola".
Pero en el caso del segundo programa, si al momento de que java arroje la primera
ventana pidiendo el primer numero, el usuario no ingresa ningn dato y da "Aceptar", y lo
mismo hace para cuando pida el segundo numero, el resultado final sera
un ERROR de lgica del programa, ya que al no ingresar nada en la caja de texto, se
guardara una cadena de caracteres en blanco y una cadena de caracteres en blanco no
puede convertirse en un numero int o double, necesita ser una cadena de caracteres
que contenga un numero para poder ser transformado a los formatos necesarios para
hacer operaciones matemticas, entonces al momento de que el programa intente
realizar la suma de los dos nmeros o de las variables num1 y num2, hallara que
estan vacos y que no pueden sumarse. El mensaje de error mostrado sera algo mas o
menos as:

Lo mismo pasara, en el segundo programa, si el usuario en lugar de introducir un numero,


introduce una letra o cualquier otro caracter diferente a un numero, ya que las letras o los
caracteres especiales no pueden convertirse de una cadena de caracteres a un numero
en
formato double o int.
Hemos estudiado las posibles formas en que
caja de texto del cuadro de dialogo arrojado
hemos hablado de cuando el usuario pulsa
dialogo,
pero
que
pasa
si
el

un usuario podra insertar los datos en la


por el JOptionPane, pero has ahora solo
el botn "Aceptar" en nuestro cuadro de
usuario
pulsa
el botn CANCELAR?.

Si el usuario pulsa el botn cancelar, el programa no se detendr ah, si no que guardara


ese valor en la variable que le hallamos asignado. Cuando se pulsa el botn cancelar
el JOptionPane ya no retorna un numero, ni una cadena de caracteres, ni una cadena de
caracteres en blanco, ni ningn dato especifico, sino que regresa un VALOR VACO, UN
VALOR NULO al que se le llama NULL. Null no es un valor, es un vaco, cuando

hablamos de una cadena de caracteres en blanco decimos que es una cadena que
contiene nada, pero cuando hablamos de un valor null decimos que es ausencia de valor.
Java lee null como un vaco y no puede realizar operaciones con ese valor, mas que solo
operaciones lgicas para tomar decisiones. Si nosotros damos cancelar cuando
nos aparezca el cuadro de dialogo en nuestro primer programa al final nos imprimir en
pantalla un mensaje que diga: "Hola null"; Pero en nuestro segundo programa nos volver
a arrojar el mensaje de error anteriormente explicado, debido a que nuestras
variables estarn vacas y
no
se podrn realizar clculos con
estas.
Para combatir este error lgico ocasionado por el null, podemos contrarrestarlo con
una instruccin lgica de control, de toma de decisiones, como un if, por ejemplo.
Para entenderlo mejor haremos un programa donde el usuario introduzca su edad y el
programa determine si es mayor de edad o no, pero si el usuario pulsa "Cancelar" el
programa debe terminarse, porque suponemos que si un usuario esta cancelando
la operacin es porque ya no necesita del programa. He aqu:
view plainprint?

1.

// Archivo: PruebaJOption.java

2.
3.

import javax.swing.JOptionPane;

4.
5.

public class PruebaJOption {

6.
7.

public static void main(String args[]) {

8.
9.

String edad;

10.

edad="";

11.

edad=JOptionPane.showInputDialog("Cual es tu edad?");

12.
13.
14.
15.

if(edad==null)
System.out.println("La operacion ha sido cancelada");
else {

16.

int edad2;

17.

edad2 = Integer.parseInt(edad);

18.
19.
20.
21.
22.

if(edad2>=18)
System.out.println("Eres mayor de edad");
else
System.out.println("Eres menor de edad");

23.
24.
25.

}
}
}

Como ya lo estudiamos lo primero que hacemos es importar la libreria en la linea numero


3, se declara la variable String edad en la linea 9, y en la linea 8 se le asigna una
cadena vaca ala
variable edad,
en
la
linea
10
ponemos
nuestra instruccin JOptionPane donde el usuario insertara su edad, supongase que el
usuario presiona la tecla "CANCELAR" entonces elJOptionPane retornara un null que se
guardara en nuestra variable edad, ahora pasara a la linea 13 donde hay un if que dice
que si la variable edad es igual a null (vaco) se imprimir el mensaje ah contenido; Y
como efectivamente, cuando el usuario presion "cancelar" retorno un null y edadahora
vale null, por tanto esa condicin se cumple y se muestra en pantalla el mensaje:
"La operacin ha sido cancelada", y ah termina nuestro programa.
Si el usuario en lugar de presionar "cancelar" hubiese escrito un numero, 20 por ejemplo,
el programa hubiera pasado a nuestra instruccin if donde se iba a evaluar 20 es igual
a null?, esto no no se cumple por tanto se pasara a la instruccin else, donde se crea
otra variable de tipo int llamada edad2 que es donde se va a almacenar el
numero matemtico ya convertido de la edad que proporciono el usuario (recuerde que
el JOptionPane retorno un String y que hay que convertirlo a int para realizar
la operacin lgica). En la linea 17 se convierte la variable String edad a un numero en
formato int y se guarda en la variable edad2, ya tenemos nuestro numero para hacer
la operacin, as que ahora anidamos otro if para determinar si es mayor de edad o no.
Evaluamos la variable int edad2 (con valor de 20) en nuestro if, y evala: edad2 es
mayor o igual a 20?, y la respuesta sera verdadera, lo condicin se cumple, por tanto se
ejecuta la impresin en pantalla inmediata alif, por lo cual se mostrara el siguiente
mensaje en pantalla: "Eres mayor de edad", y ah termina el programa.
Es muy importante visualizar que hemos convertido la variable edad a unint despus de
que el if revise que edad no sea igual a null, ya que si lo convertimos antes de esto, se
ocasionar el error lgico porque como ya dijimos, java no puede convertir un null a
un int, se necesita una cadena de caracteres con un numero para poderlo transformar a
un int.

Plus
Para ahorrar lineas de cdigo podemos realizar varias operaciones en una misma linea,
como por ejemplo declarar y asigna en una solo linea:
view plainprint?

1.

// Archivo: PruebaJOption.java

2.
3.

import javax.swing.JOptionPane;

4.
5.

public class PruebaJOption {

6.
7.

public static void main(String args[]) {

8.
9.

int edad = Integer.parseInt(JOptionPane.showInputDialog("Cual es tu edad?"));

10.

System.out.println("Tu edad es: "+edad);

11.
12.
13.

}
}

Este programa solo pide al usuario su edad y la imprime en pantalla, ntese que en la
misma linea se declara la variable de tipo int y ahi mismo se hace la conversin y
tambin se pide el dato al usuario mediante el JOptionPane. Se puede leer como que int
edad va a guardar lo que resulte de la conversin de lo que retorne el JOptionPane.

S-ar putea să vă placă și