martes, 22 de noviembre de 2011

Usando cuadros de diálogo para Entrada/Salida con JOptionPane

En los anteriores posts vimos un par de programas que muestran la salida en la ventana de comandos. Ahora veremos un par de programas de como mostrar la salida o entrada utilizando una ventana o cuadro de dialogo. Generalmente muchos programas ofrecen una interfaz gráfica de usuario (GUI) o los cuadros de dialogo (también llamados diálogos) que son ventanas en las que los programas muestran mensajes importantes a los usuarios del programa. Java contiene una clase llamada JOptionPane que nos permite producir cuadros de dialogo previamente empaquetados, los cuales permiten a los programas mostrar ventanas que contengan mensajes. A estas ventanas se les conoce como diálogos de mensaje. Un cuadro de dialogo es un objeto de interfaz gráfica de usuario (GUI), pero ¿cual es la diferencia entre mostrar la salida en consola y en interfaz gráfica?. En consola solo podemos mostrar texto y en una interfaz gráfica de usuario podemos mostrar no solo texto, si no también varios elementos gráficos como botones, barras, casillas de verificación, menús, cuadros de texto e imágenes.

El método showMessageDialog es un método especial de la clase JOptionPane, el cual se conoce como método static. Generalmente los métodos estatic se llaman utilizando el nombre de la clase, seguido de un punto ( . ) y el nombre del método, tal como se muestra a continuación.

Proceso de llamar un método estatic.

Uno de los puntos fuertes de Java es su extenso conjunto de clases predefinidas que los programadores pueden usar, en vez de tener que "reinventar todo". Las numerosas clases predefinidas de Java se agrupan en clases relacionadas, conocidas como paquetes. Un paquete es una colección de clases con nombre, estos se conocen colectivamente como biblioteca de clases, o la Interfaz de Programación de Aplicaciones (API) de Java. Estos paquetes (API) de Java se dividen en básicos y opcionales. Los nombres de la mayoría de los paquetes del API de Java comienzan, ya sea con "java" (paquetes básicos) o "javax" (paquetes opcionales). Muchos de estos se incluyen como parte del Kit de desarrollo de software para Java.

En este post mostraremos un pequeño programa modificado del anterior post llamado PrimerPrograma para que el texto que muestra en consola, ahora lo muestre en un cuadro de dialogo. Este programa muestra el objeto String “"¡Bienvenido a la programacion en Java!\n\n http://delfirosales.blogspot.com” en un dialogo de mensaje (o cuadro de dialogo).
//usando JOptionPane para mostrar la salida en un cuadro de dialogo.

import javax.swing.JOptionPane;

public class PrimerPrograma {
 
 public static void main ( String args [] )
 {
  JOptionPane.showMessageDialog( null, "¡Bienvenido a la programacion en Java!\n
  \n http://delfirosales.blogspot.com" );
 }
}
En este ejemplo utilizamos la clase predefinida de Java JOptionPane, la cual se encuentra en el paquete javax.swing.

import javax.swing.JOptionPane; //Este programa usa JOptionPane

La declaración import es una declaración que se utiliza para identificar las clases predefinidas que se utilizan en nuestro programa en Java. Esta declaración ayuda al compilador a localizar las clases que deseamos utilizar. Importante saber es que todas las declaraciones import deben de aparecer antes de las declaración de la clase, si lo ponemos dentro o después de la declaración de una clase, es un error de sintaxis . Por cada nueva clase que utilizamos del API de Java debemos indicar el paquete en el que se encuentra esa clase.

Ahora entonces, la linea import javax.swing.JOptionPane; indica al compilador que en nuestro programa utilizaremos la clase JOptionPane del paquete javax.swing.

JOptionPane.showMessageDialog( null, "¡Bienvenido a la programacion en Java!\n\n http://delfirosales.blogspot.com" );

Las lineas anteriores contenidas en el método main, llaman al método showMessageDialog de la clase JOptionPane para mostrar un cuadro de dialogo que contiene un mensaje. Este método requiere de dos argumentos y cuando un método requiere varios argumentos, estos se separan con comas ( , ). Por ahora el primer argumento sera la palabra clave null y el segundo argumento "¡Bienvenido a la programacion en Java!\n\n http://delfirosales.blogspot.com" es la cadena a mostrar en el cuadro de dialogo. El primer argumento ayuda a la aplicación en Java a determinar en donde se va a colocar el cuadro de dialogo, cuando el primero argumento es null, el cuadro de dialogo aparece en el centro de la pantalla de la computadora, tal como se muestra en la siguiente imagen.

Usando JOptionPane para mostrar la salida de la aplicación PrimerPrograma.

La barra de titulo del cuadro de dialogo contiene la cadena Mensaje, esto para indicar que este cuadro de dialogo va a presentar un mensaje al usuario. El cuadro de dialogo incluye un botón Aceptar (OK), que el usuario puede oprimir para descartarlo (ocultarlo).
Cuadro de Dialogo de Mensaje.

El paquete javax.swing contiene muchas clases que ayudan a los programadores en Java a crear Interfaces Gráficas de Usuario (GUIs) para las aplicaciones. Los componentes de la GUI facilitan la entrada de datos al usuario del programa y la presentación de los datos de salida. Tal como lo comentamos anteriormente en las GUIs (interfaz gráfica de usuario) podemos mostrar no solo texto, si no también elementos gráficos como botones, casillas de verificación, menús, cuadros de texto e imágenes. Todos estos forman parte de la GUI y permiten interactuar con el programa.

Introducción de Texto en un Cuadro de Dialogo (Diálogos de Entrada)

Hay varios tipos de cuadros de dialogo de la clase JOptionPane. Consideremos el anterior uno de ellos, el cuadro de dialogo de salida, es el que genera el método showMessageDialog. Ahora toca mostrar el cuadro de dialogo de entrada, el cual permite al usuario introducir datos en el programa. El cuadro de dialogo de entrada muestra un mensaje de confirmación y muestran un icono de signo de pregunta esperando la entrada del usuario. Al hacer clic en el botón Aceptar se procede el valor introducido. El siguiente programa utiliza otro cuadro de dialogo predefinido de la clase JoptionPane, que permite al usuario introducir un valor para utilizarlo en el programa. En este caso pide el nombre del usuario y responde con un dialogo de mensaje que contiene un saludo y el nombre que el usuario haya introducido.
//Entrada básica con un cuadro de dialogo.
import javax.swing.JOptionPane;

public class EjemploGUI
{
 public static void main ( String args[] )
 {
  // Pide al usuario que escriba su nombre
  String nombre = JOptionPane.showInputDialog( "Cual es su nombre?" );
  
  // Crea el mensaje
  String mensaje = String.format( "Bienvenido, %s, a la programación en Java!", nombre );
  
  // Muestra el mensaje para dar la bienvenida al usaurio por su nombre
  JOptionPane.showMessageDialog( null, mensaje, JOptionPane.INFORMATION_MESSAGE );
 }
}

Cuadro de dialogo de Entrada, pide al usuario que escriba su nombre.

Muestra el mensaje para dar la bienvenida al usuario por su nombre.

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

Las líneas anteriores utilizan el método showInputDialog de JOptionPane para mostrar el dialogo de entrada, el cual contiene un indicador y un campo (conocido como campo de texto) en la cual el usuario puede introducir texto. El argumento de showInputDialog es el indicador que muestra lo que el usuario debe escribir. El usuario escribe caracteres en el campo de texto, a continuación, hace clic en el botón Aceptar o presionar la tecla intro para devolver la cadena de caracteres (objeto String) al programa. El método showInputDialog devuelve un objeto String que contiene los caracteres tecleados por el usuario. Almacenamos el objeto String en la variable nombre. Si se oprime el botón Cancelar en el cuadro de dialogo, el método devuelve null y el programa muestra la palabra clave “null” como el nombre.

String mensaje = String.format( "Bienvenido, %s, a la programación en Java!", nombre );

La linea anterior es una instrucción que utiliza el método static String llamado format para devolver un objeto String que contiene un saludo con el nombre de usuario. El método format es similar al metodo System.out.printf, excepto que format devuelve el objeto String con formato, en vez de mostrarlo en una ventana de comandos.

JOptionPane.showMessageDialog( null, mensaje );

La línea anterior muestra el saludo en un cuadro de dialogo del mensaje.

Iconos o constantes de dialogo utilizados por JoptionPane

La clase JoptionPane proporciona varias versiones sobrecargadas de los métodos showInputDialog y showMessageDialog, así como métodos que muestran otros tipos de diálogos. Los Iconos o constantes que representan los tipos de diálogos de mensajes se muestran en la siguiente figura.

Iconos o contantes static de la clase JoptionPane para diálogos de mensaje.

Todos los tipos de dialogo de mensaje, excepto PLAIN_MESSAGE, muestran un icono a la izquierda del mensaje. Estos iconos proporcionan una indicación visual de la importancia del mensaje para el usuario. Por ejemplo el icono QUESTION_MESSAGE es el icono predeterminado para un cuadro de dialogo de entrada.

Referencias:
Class JOptionPane
Java How to Program (early objects) (9th Edition) (Deitel)
Java Programming, Joyce Farrell.
Introduction to Java Programming, Comprehensive (8th Edition)

1 comentario:

adrianna sanchez dijo...
Este comentario ha sido eliminado por el autor.