Hola a todos, ¿qué tal? Vamos a ver los
diferentes tipos de ventanas emergentes o cuadros de diálogo. Los cuadros de
diálogo son ventanas que aparecen para interactuar con el usuario, pueden
aparecer la ventana con dos botones Aceptar y Cancelar para aceptar o cancelar
una acción, otra ventana que nos permita seleccionar un fichero o un documento…
Los tipos de ventana emergentes son los siguientes:
· Cuadros
de diálogo: utiliza la clase JOptionPane.
· Selección
de ficheros: utiliza la clase JFileChooser.
· Selector
de color: es una ventana que aparece con una paleta de colores, utiliza la
clase JColorChooser.
Vamos a ver la clase JOptionPane que
ya vimos en el bloque Programación Básica, pero ahora la vamos a
ver más detallada. Esta clase posee una serie de métodos, entre ellos se encuentran:
· showInputDialog():
para introducir información en la ventana emergente.
· showMensageDialog():
una ventana emergente que nos muestra información.
· showConfirmDialog(): para
confirmar una acción.
· showOptionDialog(): para
seleccionar una opción.
Lo vemos como siempre en una práctica cuyo
código inicial es el siguiente:
package graficas;
import javax.swing.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
public class
VentanaEmergente {
public static void main(String[] args) {
MarcoCDialogo mimarco =new MarcoCDialogo
();
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mimarco.setVisible(true);
}
}
class MarcoCDialogo extends JFrame{
public MarcoCDialogo () {
setBounds(500, 300, 400, 250);
add(new
LaminaCDialogo());
}
}
class LaminaCDialogo extends JPanel{
public LaminaCDialogo() {
boton1= new JButton("boton1");
boton2= new JButton("boton2");
boton3= new JButton("boton3");
boton4= new JButton("boton4");
boton1.addActionListener(new
Accion_botones());
boton2.addActionListener(new
Accion_botones());
boton3.addActionListener(new
Accion_botones());
boton4.addActionListener(new
Accion_botones());
add(boton1);
add(boton2);
add(boton3);
add(boton4);
}
private class Accion_botones implements ActionListener{
@Override
public void
actionPerformed(ActionEvent e) {
// TODO
Auto-generated method stub
if (e.getSource()==boton1) {
System.out.println("1");
}else if (e.getSource()==boton2) {
System.out.println("2");
}else if (e.getSource()==boton3) {
System.out.println("3");
}else {
System.out.println("4");
}
}
}
JButton boton1;
JButton boton2;
JButton boton3;
JButton boton4;
}
Este archivo está formado primero por la
clase principal main, una clase MarcoCDialogo que
hereda de JFrame dentro del constructor de la clase
establecemos el tamaño de la ventana e instanciamos la clase LaminaCDialogo.
Tenemos la clase LaminaCDialogo que hereda de JPanel, dentro de esta clase creamos 4 botones, ponemos estos botones a la escucha de un evento tipo ActionListener y añadimos los botones a la lámina. Y la última clase Accion_botones que implementa la interfaz ActionListener, dentro del método actionPerformed y con varios condicionales indicamos que cuando se pulse uno de los botones se imprima la frase que hay dentro de System.out en consola.
Es decir, si pulsamos el botón 1 en la
consola aparece el número 1, si pulsamos el botón 3 en consola aparece el
número 3.
Bien, pues nuestra práctica va a consistir en
sustituir los System.out por una ventana de JOptionPane,
en lugar de que nos imprima información en la consola nos aparezca una ventana
emergente. Antes de empezar sería recomendable ir a la API de Java y ver con
profundidad la clase JOptionPane y sus métodos para ver su
uso.
En el código vamos a sustituir el System.out del
botón 1 por una ventana de JOptionPane que nos muestre un
mensaje, vamos a utilizar el método más sencillo que nos pide dos parámetros:
el componente padre y el mensaje:
if (e.getSource()==boton1) {
//System.out.println("1");
JOptionPane.showMessageDialog(LaminaCDialogo.this, "Este es
el botón 1");
}
El componente padre es la lámina que es donde está ubicado el botón y donde se va a ejecutar la ventana emergente. Si ejecutamos, pulsamos el botón 1:
Solo le hemos pasado dos parámetros pero podemos
pasarle más parámetros para que nos añada un título y nos cambie el icono que
aparece en la ventana:
JOptionPane.showMessageDialog(LaminaCDialogo.this, "Este es el botón 0", "Información", 1);
Si probamos ahora:
El tercer parámetro que hemos añadido ha sido
el título y el cuarto es un número que corresponde a un icono. En la API de Java podéis ver los
números que corresponden a cada icono o podéis ir probando cambiando los números
para ver que iconos aparecen.
Vamos al segundo botón vamos a utilizar una
ventana de JOptionPane para que el usuario introduzca algo.
else if (e.getSource()==boton2) {
//System.out.println("2");
JOptionPane.showInputDialog("Introduce
tu nombre");
}
Probamos:
Es el tipo de método más fácil, podemos
indicar más parámetros, el componente padre, el título, el icono:
JOptionPane.showInputDialog(LaminaCDialogo.this, "Introduce tu
nombre", "Información
del usuario", 2);
Ejecutamos:
Vamos al tercer botón, utilizaremos una
ventana de JOptionPane para elegir una opción:
else if (e.getSource()==boton3) {
//System.out.println("3");
JOptionPane.showConfirmDialog(LaminaCDialogo.this, "Elige
opción", "Opciones", 1);
}
El primer parámetro es la lámina, el segundo es la frase que va a mostrar la ventana, el tercer parámetro el título y el cuarto parámetro es el icono. Probamos:
Y vamos al cuarto botón y el último también
utilizamos una ventana de JOptionPane de opciones:
else {
//System.out.println("4");
JOptionPane.showConfirmDialog(LaminaCDialogo.this, "Elige
opción", "Opciones", 1, 1);
}
El cual podemos añadir más parámetros.
Esto ha sido todo en el bloque de
Aplicaciones gráficas, si habéis llegado hasta aquí agradeceros vuestra
constancia, os animo a seguir aún quedan muchas cosas por ver, reitero en
muchos posts que podéis enviar vuestras dudas pero también vuestros propios
ejemplos para ver también otra forma de desarrollarlos.
Os espero en el próximo bloque veremos los
despliegues de aplicaciones. Saludos!
8.3.4 Creación de una disposición libre
<< >> 9.1 ARCHIVOS JAR
No hay comentarios:
Publicar un comentario