Documente Academic
Documente Profesional
Documente Cultură
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:
1.
//Archivo: PruebaJOption.java
2.
3.
import javax.swing.JOptionPane;
4.
5.
6.
7.
8.
9.
String nombre;
10.
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:
1.
//Archivo: PruebaJOption.java
2.
3.
import javax.swing.JOptionPane;
4.
5.
6.
7.
8.
9.
String numero1;
10.
String numero2;
11.
12.
13.
14.
int num1;
15.
double num2;
16.
num1 = Integer.parseInt(numero1);
17.
num2 = Double.parseDouble(numero2);
18.
19.
20.
21.
22.
23.
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
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.
6.
7.
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.
}
}
}
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.
6.
7.
8.
9.
10.
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.