Palabras clave: Librerías
, Diálogos
, Mensajes
, Petición de datos
.
1. Ventana de diálogo
Una ventana de diálogo es una ventana que aparace de forma independiente a la ventana gráfica. |
Los principales objetivos de las ventanas de diálogo son mostrar avisos y solicitar datos a los usuarios.
El formato general de una ventana de diálogo es
JOptionPane.show<tipo>Dialog();
donde
-
El número de parámetros es diferente dependiendo del tipo de ventana a mostrar, y
-
<tipo>
puede ser:-
Message para mostrar un mensaje de aviso,
-
Input para capturar un dato de entrada, o
-
Confirm para confirmar una pregunta con un sí o un no.
-
Hay algo nuevo en estas funciones. Constan de dos parte separadas por un punto
.
. Cuando se escribe así una función se está usando programación orientada a objetos. La primera parte indica que se hará una instrucción sobre ventanas de diálogo y la segunda parte indica la función o acción concreta que se realizará. En este caso se utilizan funciones para mostrar la ventana más adecuada (mensaje, entrada o confirmación).
2. Ventanas de aviso
Una ventana de aviso se construye con la siguiente instrucción:
JOptionPane.showMessageDialog(null, "Mensaje de aviso");
y con la que se obtiene el siguiente resultado:
Hay una palabra nueva en el primer argumento: null
.
En general, cuando creamos una ventana es porque nuestra aplicación trabaja con
más ventanas. Al mostrar la ventana podemos forzar a que dependa de otras ventanas o por el contrario, con null
, indicamos que no depende de ninguna y además se mostrará en el centro.
3. Ventanas para petición de datos
Existen varios tipos de ventanas para la petición de datos. La más sencilla que puede construirse viene dada por el siguiente código
String s = JOptionPane.showInputDialog("Mensaje de introducción de datos : ");
Su apariencia es similar a lo siguiente:
y almacena en el String s
el valor introducido en el campo de texto. Si cierras la ventana sin introducir ningún texto se guardará el valor null
en la variable s
.
En el caso de que quieras que el usuario seleccione una de entre dos posibles opciones entonces es recomendable usar esta otra línea de código:
int n = JOptionPane.showConfirmDialog(null, "Mensaje", "Titulo del Diálogo", JOptionPane.YES_NO_OPTION);
que genera una ventana con dos botones:
En este caso retornará el valor entero 1 si seleccionas "No" y el valor 0 si seleccionas "Yes". Si cierras la ventana sin seleccionar ninguna opción se guardará el valor -1 en la variable n
.
4. Conversión de datos
Como puedes ver, la función showInputDialog
devuelve una cadena de caracteres y showConfirmDialog
retorna enteros. Cuando desarrolles un programa quizás te interese capturar un número real con showInputDialog
o interpretar el entero, 0 o 1, retornado por showConfirmDialog
como un valor booleano. Para estos casos,
¿cómo podemos convertir un String o un entero a cualquier otro tipo de dato simple?
El casting aquí rara vez funciona y tendrás que hacer uso de funciones de programación. Processing dispone de las siguientes funciones que permiten transformar la información contenida en una variable a otro tipo de dato.
boolean boolean( un_int_o_un_string )
-
Convierte un int o string a su representación booleana. El string
"true"
se transforma en el valortrue
en otro caso esfalse
. El entero0
se transforma en el valorfalse
y cualquier otro valor se transforma entrue
. float float( un_int_o_un_string )
-
Convierte un int o string a su representación real. Si el string no responde a un número valdrá
NaN
y si es un entero le añadirá el punto decimal. int int( un_dato_simple_o_un_string )
-
Convierte un tipo de dato primitivo o string a su representación entera.
String str( un_tipo_de_dato_simple )
-
Retorna la representación string de los tipos de datos primitivos.
No es lo mismo una función de conversión de datos que un casting.
|
5. Librerías
Processing no dispone de funciones para pedir datos al usuario por la pantalla. Las instrucciones que acabamos de ver para la creación de ventanas de diálogo no son instrucciones del lenguaje de programación Processing.
Pero esto no es realmente un problema. Ya sabemos que un tipo de instrucciones simples son las funciones y tú ya sabes crear funciones … por tanto ¡eres capaz de ampliar el lenguaje de Processing creando tus propias funciones!. Pero además de esto, los lenguajes de programación permiten también utilizar las funciones implementadas por terceros. Esto permite aumentar de forma considerable el número de funciones que resuelven problemas de muy diversa índole.
Processing permite que se añadan más funciones siempre y cuando estén escritas en lenguaje Processing o en lenguaje Java. Como las funciones expuestas que crean ventanas de diálogo son funciones que se encuentran en una librería escrita en lenguaje Java entonces sí podemos utilizarlas en Processing.
Una librería es un conjunto de funciones que están guardadas en un fichero y que pueden ser utilizadas en un lenguaje de programación para aumentar su conjunto de instrucciones. |
El PDE permite añadir nuevas librerías mediante el menú Sketch > Import Library , pero puedes encontrar muchas más en https://www.processing.org/reference/libraries/.
|
Cuando se quiera utilizar funciones que se encuentren guardadas en una librería, recurriremos a la instrucción import
para indicar a Processing que incorpore "su contenido" (nuevas funciones) a su lenguaje. La instrucción import
se utiliza así:
import <nombre-de-la-libreria>;
6. ¿Cómo se utilizan los diálogos?
En lo que respecta al uso de las ventanas de diálogo se tendrá que introducir como primera línea de nuestro programa la sentencia:
import javax.swing.JOptionPane;
Así, nada más ejecutar tu programa tendrás un montón de funciones más,
entre ellas tendrás las funciones
JOptionPane.showMessageDialog()
,
JOptionPane.showInputDialog()
y
JOptionPane.showConfirmDialog()
.
Así, solo tienes que "mencionarlas" en aquellas líneas de tu programa en las que te interese mostrar un mensaje, pedir un dato o solicitar una confirmación. Veamoslo con un ejemplo sencillo.
1
2
3
4
5
6
7
8
9
10
11
12
13 /* Grupo ISCyP.
Curso 2015-2016
*/
import javax.swing.JOptionPane; // (1)
void setup() {
String s = JOptionPane.showInputDialog("Introduce los metros: "); // (2)
float metros = float(s); // (3)
JOptionPane.showMessageDialog(null, "Son "+ (metros*100) + "centímetros"); // (4)
}
1 | La instrucción input le indica a Processing que tiene que cargar más funciones.
En concreto, todas las funciones de javax.swing.JOptionPane . |
2 | Declara la variable s de tipo String y le asigna el valor retornado por JOptionPane.showInputDialog() . |
3 | Declara la variable metros de tipo float y le asigna el valor retornado por la función float() para el argumento s . Es decir, metros almacenará un valor numérico de tipo float que coincida con la secuencia de caracteres del String s . |
4 | Ejecuta la función JOptionPane.showMessageDialog() para imprimir en una ventana de diálogo el valor de metros
haciendo concatenación (casting) con dos cadenas de caracteres. |
7. Repaso
-
Las librerías son ficheros que contienen más funciones para ampliar nuestro lenguaje de programación.
-
Para cargar las funciones de las librerías en Processing se utiliza la instrucción
import <nombre-de-la-librería>
. -
Processing pueden usar funciones escritas en el lenguaje Java para pedir datos al usuario mediante la instrucción
import javax.swing.JOptionPane
. -
La función para mostrar mensajes es
JOptionPane.showMessageDialog()
. -
Las funciones para pedir datos son
JOptionPane.showInputDialog()
yJOptionPane.showConfirmDialog()
, que retornan datos de tipoString
eint
respectivamente, por lo que hay que usar otras funciones para convertirlos a otros tipos de datos simples o String.