Diferencia entre revisiones de «Usuario:ManuelRomero/ioGrafica»

De WikiEducator
Saltar a: navegación, buscar
(JOptionPane.showConfirmDialog())
 
(17 revisiones intermedias por el mismo usuario no mostrado)
Línea 35: Línea 35:
 
  p.e pedir un dato, pedir una confirmación mostrar un mensaje,...
 
  p.e pedir un dato, pedir una confirmación mostrar un mensaje,...
  
===Parámetros de los métodos===
+
 
 +
====Parámetros de los métodos====
 
Estos métodos tienen unos parámetros muy similares en sus constructores que se comentan a continuacion
 
Estos métodos tienen unos parámetros muy similares en sus constructores que se comentan a continuacion
 
;'''Component''' ''parentComponent''
 
;'''Component''' ''parentComponent''
Línea 45: Línea 46:
 
;'''String''' ''title'' ==> Es el título de la caja dialogo
 
;'''String''' ''title'' ==> Es el título de la caja dialogo
  
=== JOptionPane.showOptionDialog() 1 parámetros===
+
==== JOptionPane.showInputDialog() 1 parámetros====
 
*Tenemos sobrecargado el método con 1,2,3,4 o 6 parámetros.
 
*Tenemos sobrecargado el método con 1,2,3,4 o 6 parámetros.
 
*El método Retorna el String insertado o null si cancelamos
 
*El método Retorna el String insertado o null si cancelamos
Línea 67: Línea 68:
 
[[Archivo:input_1_parametro.png]]
 
[[Archivo:input_1_parametro.png]]
  
=== JOptionPane.showOptionDialog() 2 parámetros===
+
===== JOptionPane.showInputDialog() 2 parámetros=====
 
*Argumentos Aquí le pasamos:
 
*Argumentos Aquí le pasamos:
 
#el Component  padre del dialog o valor null
 
#el Component  padre del dialog o valor null
Línea 93: Línea 94:
  
  
=== JOptionPane.showOptionDialog() 3 parámetros===
+
===== JOptionPane.showInputDialog() 3 parámetros=====
 
Ahora para simplificar el primer parámetro ponemos null y así no tenemos que crear la ventana principal
 
Ahora para simplificar el primer parámetro ponemos null y así no tenemos que crear la ventana principal
 
*Argumentos Aquí le pasamos:
 
*Argumentos Aquí le pasamos:
Línea 113: Línea 114:
 
}//End de la clase
 
}//End de la clase
 
</source>
 
</source>
[[Archivo:input_4_parametros.png]]
+
[[Archivo:input_3_parametros.png]]
=== JOptionPane.showOptionDialog() 4 parámetros===
+
===== JOptionPane.showInputDialog() 4 parámetros=====
 
Seguimos poniendo null al primer parámetro (component padre) para simplificar  
 
Seguimos poniendo null al primer parámetro (component padre) para simplificar  
 
*Argumentos Aquí le pasamos:
 
*Argumentos Aquí le pasamos:
Línea 120: Línea 121:
 
#Object mensaje que aparece en la pantalla
 
#Object mensaje que aparece en la pantalla
 
#String titulo ==> Es el título de la caja de diálogo(Por defecto aparecía '''entrada''')
 
#String titulo ==> Es el título de la caja de diálogo(Por defecto aparecía '''entrada''')
#int icono que se visualiza por defecto (hay cuatro posibilidades definidas como constantes de JOptionPane
+
#int icono que se visualiza por defecto para indicar el tipo de mensaje. Valores posibles
 +
    ERROR_MESSAGE
 +
    INFORMATION_MESSAGE
 +
    WARNING_MESSAGE
 +
    QUESTION_MESSAGE
 +
    PLAIN_MESSAGE
  
JOptionPane.ERROR_MESSAGE;
+
{| class="wikitable"
JOptionPane.WARNING_MESSAGE;
+
|+CONSTANTES PARA ICONOS DE JOptionPane
JOptionPane.INFORMATION_MESSAGE;
+
||''''Constante JOptionPane''''||'''JOptionPane.ERROR_MESSAGE'''||'''.INFORMATION_MESSAGE''' ||'''.WARNIG_MESSAGE'''||'''.QUESTION_MESSAGE'''||'''.PLAIN_MESSAGE'''
JOptionPane.MESSAGE_PROPERTY;
+
|-
JOptionPane.PLAIN_MESSAGE;
+
||''''Constante numérica''''||0 ||1 || 2||3 ||-1
 +
|-
 +
||'''Dialog generado'''||[[Archivo:input_4_parametros_error.png|200px]]||[[Archivo:input_4_parametros_informacion.png|200px]]||[[Archivo:input_4_parametros_warning.png|200px]]||[[Archivo:input_4_parametros_question.png|200px]]||[[Archivo:input_4_parametros_plain.png|200px]]
 +
|}
 
<source lang=java>
 
<source lang=java>
 
import javax.swing.JOptionPane;
 
import javax.swing.JOptionPane;
 +
import javax.swing.JFrame;
 
public class CajaDialogo {//Mi clase extiende  de JFrame que es una típica ven window
 
public class CajaDialogo {//Mi clase extiende  de JFrame que es una típica ven window
 
public static void main(String []a){
 
public static void main(String []a){
 
String seleccion;
 
String seleccion;
/*Con dos argumento
+
/*Con cuatro argumento
* v ==> componet padre del dialog  
+
* null ==> componet padre del dialog  
 
* Object mensaje ==> Es el mensaje que aparece en el dialog
 
* Object mensaje ==> Es el mensaje que aparece en el dialog
* Object textoDefecto ==> Es el texto que aparece por defecto en el dialog*/
+
* String  titulo==> Es el título que aparece  
seleccion = JOptionPane.showInputDialog(null,"Dime tu nombre","Este es el texto por defecto");
+
* int que representa el icono que se muestra
 +
*/
 +
seleccion = JOptionPane.showInputDialog(null, "Dime tu nombre","Icono de información",JOptionPane.INFORMATION_MESSAGE);
 
System.out.println("Nombre introducido "+seleccion);
 
System.out.println("Nombre introducido "+seleccion);
 
}//End de main
 
}//End de main
 
}//End de la clase
 
}//End de la clase
 
</source>
 
</source>
[[Archivo:input_3_parametros.png]]
+
[[Archivo:input_4_parametros.png]]
 +
 
 +
===== JOptionPane.showInputDialog() 7 parámetros=====
 +
*En este caso en lugar de presentar una caja de texto para escribir
 +
*Presentamos un combobox o caja combinada con diferentes opciones
 +
*La lista de opciones se presenta en un array de objetos
 +
*El método devuelve un object, ya que la lista es de object, aunque lo normal es trabajar con String
 +
Seguimos poniendo null al primer parámetro (component padre) para simplificar
 +
<source lang=java>
 +
public static void main(String []a){
 +
  String estudios[]={"Ciclo Medio","Ciclo Superior","Diplomatura ","Ingeniería","Grado"};
 +
  String seleccion =(String) JOptionPane.showInputDialog( //Debemos convertir el Object a String
 +
              null, //Component parent
 +
                    "Indica estudios", //String mensaje
 +
            "Estudios Realizados",//String título
 +
            JOptionPane.QUESTION_MESSAGE, //Icono por defecto
 +
            null, //Icono personalizado
 +
            estudios,//Object[] ==> Vector con valores
 +
                    estudios[2]//Valor por defecto seleccionado
 +
    );
 +
}//End de main
 +
}//End de la clase
 +
</source>
 +
[[Archivo:input_6_parametros_sin_icono.png]]
 +
*Observar que el 5º parámetro es un '''Ico''' o icono que remplazaría al icono por defecto del 4º parámetro :
 +
<source lang=java>
 +
import javax.swing.Icon;
 +
import javax.swing.ImageIcon;
 +
import javax.swing.JOptionPane;
 +
import javax.swing.JFrame;
 +
public class CajaDialogo {//Mi clase extiende  de JFrame que es una típica ven window
 +
public static void main(String []a){
 +
String seleccion;
 +
String estudios[]={"Ciclo Medio","Ciclo Superior","Diplomatura ","Ingeniería","Grado"};
 +
Icon icono = new ImageIcon("iconos/cd.png");
 +
System.out.print("icono -"+icono.toString()+"-");
 +
seleccion =(String) JOptionPane.showInputDialog(
 +
null, //Component parent
 +
    "Indica estudios", //String mensaje
 +
"Estudios Realizados",//String título
 +
JOptionPane.QUESTION_MESSAGE, //Icono por defecto
 +
icono, //Icono personalizado
 +
estudios,//Object[] ==> Vector con valores
 +
    estudios[2]//Valor por defecto seleccionado
 +
    );
 +
}//End de main
 +
}//End de la clase
 +
</source>
 +
*En este caso el directorio '''iconos''' están al mismo nivel que '''src''' dependiendo del directorio del proyecto
 +
[[Archivo:input_6_parametros.png]]
 +
[[Archivo:input_6_parametros_b.png]]
 +
 
  
  
Tenemos un método ''JOptionPane.showOptionDialog()'' que nos muestra la ventana más configurable de todas, en ella debemos definir todos los botones que lleva. De hecho, las demás ventanas disponibles con ''JOptionPane'' se construyen a partir de esta. Por ello, al método debemos pasarle muchos parámetros:
+
====ShowOptionDialog====
 +
*Es la ventana más configurable de todas.
 +
*A continuación hacemos una lista de los parámetros
 +
*El concepto de los parámetros se utiliza también en el resto de los métodos
  
* '''parentComponent''': A partir de este componente, se intentará determinar cual es la ventana que debe hacer de padre del ''JOptionPane''. Se puede pasar ''null'', pero conviene pasar, por ejemplo, el botón desde el cual se lanza la acción que provoca que se visualice el ''JOptionPane''. De esta manera, la ventana de aviso se visualizará sobre el botón y no se podrá ir detrás del mismo si hacemos click en otro sitio.
+
* '''parentComponent''': A partir de este componente, se intentará determinar cual es el componente que hace de padre del ''JOptionPane''. Se puede pasar ''null'', pero conviene pasar, por ejemplo, el botón desde el cual se lanza la acción que provoca que se visualice el ''JOptionPane''.La ventana que aparece centrada en la pantalla o en el componet padre
 
* '''message''': El mensaje a mostrar, habitualmente un ''String'', aunque vale cualquier ''Object'' cuyo método ''toString()'' devuelva algo con sentido.
 
* '''message''': El mensaje a mostrar, habitualmente un ''String'', aunque vale cualquier ''Object'' cuyo método ''toString()'' devuelva algo con sentido.
 
* '''title''': El título para la ventana.
 
* '''title''': El título para la ventana.
Línea 156: Línea 222:
  
 
La llamada a ''JOptionPane.showOptionDialog()'' devuelve un entero que representa la opción que ha seleccionado el usuario. La primera de las opciones del array es la posición cero. Si se cierra la ventana con la cruz de la esquina superior derecha, el método devolverá -1.
 
La llamada a ''JOptionPane.showOptionDialog()'' devuelve un entero que representa la opción que ha seleccionado el usuario. La primera de las opciones del array es la posición cero. Si se cierra la ventana con la cruz de la esquina superior derecha, el método devolverá -1.
 
Aquí un ejemplo de cómo llamar a este método
 
  
 
<source lang=java>
 
<source lang=java>
int seleccion = JOptionPane.showOptionDialog(
+
import javax.swing.JOptionPane;
  unComponentePadre,
+
public class DialogoShow {
  "Seleccione opcion",  
+
public static void main(String []s){
  "Selector de opciones",
+
      int seleccion = JOptionPane.showOptionDialog(
  JOptionPane.YES_NO_CANCEL_OPTION,
+
                      null,//El component padre
  JOptionPane.QUESTION_MESSAGE,
+
          "Seleccione opcion", //El mensaje que aparece en el dialog
  unIcono,    // null para icono por defecto.
+
          "Selector de opciones",//El titilo
  new Object[] { "opcion 1", "opcion 2", "opcion 3" },  // null para YES, NO y CANCEL
+
          JOptionPane.YES_NO_CANCEL_OPTION,//Botones que apareces para seleccionar
  "opcion 1");
+
          JOptionPane.QUESTION_MESSAGE,//Icono por defecto
 +
          null,    // null para icono por defecto, o un icono personalizado
 +
          new Object[] { "opcion 1", "opcion 2", "opcion 3" },  // botones presonalizados  null  
 +
    //botones por defecto en este caso
 +
                                                                  // YES, NO y CANCEL
 +
          "opcion 1");//Botón selecconado por defecto
 +
        if (seleccion != -1)
 +
  System.out.println("seleccionada opcion " + (seleccion + 1));//El botón primero es valor 0...
 +
}//End del main
 +
}//End de la clase
  
if (seleccion != -1)
 
  System.out.println("seleccionada opcion " + (seleccion + 1));
 
 
</source>
 
</source>
  
Línea 178: Línea 249:
 
[[Imagen:ShowOptionDialog.jpg]]
 
[[Imagen:ShowOptionDialog.jpg]]
  
=== JOptionPane.showInputDialog() ===
 
  
*Tenemos varios métodos ''JOptionPane.showInputDialog()''
+
==== .showMessageDialog() Mostrar mensaje ====
*Se puede hacer ya que variaos parámetros toman valor inicializado por defecto y no debemos pasarlos
+
 
+
Los parámetros y sus significados son muy similares a los del método ''showOptionDialog()'', pero hay una diferencia.
+
En este caso si  pasamos un array de opciones se verán como un JComboBox
+
 
+
<source lang=java>
+
String seleccion = JOptionPane.showInputDialog(
+
  unComponentePadre,
+
  "Input dialog",
+
  JOptionPane.QUESTION_MESSAGE);  // el icono sera un iterrogante
+
       
+
System.out.println("El usuario ha escrito "+seleccion);
+
</source>
+
 
+
y la imagen que obtenemos con este código
+
 
+
[[Imagen:ShowInputDialog.jpg]]
+
 
+
En este segundo ejemplo, damos todas las opciones que queremos, obteniendo un ''JComboBox''
+
 
+
<source lang=java>
+
// Con JCombobox
+
Object seleccion = JOptionPane.showInputDialog(
+
  unComponentePadre,
+
  "Seleccione opcion",
+
  "Selector de opciones",
+
  JOptionPane.QUESTION_MESSAGE,
+
  unIcono,  // null para icono defecto
+
  new Object[] { "opcion 1", "opcion 2", "opcion 3" },
+
  "opcion 1");
+
 
+
System.out.println("El usuario ha elegido "+seleccion);
+
</source>
+
 
+
y esta es la imagen que se obtiene.
+
 
+
[[Imagen:ShowInputDialog2.jpg]]
+
 
+
=== JOptionPane.showMessageDialog() ===
+
  
 
*Esta es la más sencilla de todas, sólo muestra una ventana de aviso al usuario.  
 
*Esta es la más sencilla de todas, sólo muestra una ventana de aviso al usuario.  
Línea 225: Línea 256:
  
 
<source lang=java>
 
<source lang=java>
JOptionPane.showMessageDialog(
+
import javax.swing.*;
  componentePadre,
+
public class DialogMensaje {
  "Un aviso puñetero");
+
public static void main(String[] args) {
 
+
// TODO Auto-generated method stub
System.out.println("ya estas avisado");
+
JOptionPane.showMessageDialog(
 +
  null,//Componet el padre
 +
  "Un aviso del programa"//Mesaje que aparece por defecto
 +
  );
 +
System.out.println("ya estas avisado");
 +
}
 +
}
 
</source>
 
</source>
 
+
Este médoto también tiene sobrecarga para modificar
y la imagen que muestra este código
+
Título e icono por defecto.
  
 
[[Imagen:ShowMessageDialog.jpg]]
 
[[Imagen:ShowMessageDialog.jpg]]
  
=== JOptionPane.showConfirmDialog() ===
+
==== showConfirmDialog():Mesaje pidiendo confirmación ====
 
+
 
*Este método muestra una ventana pidiendo una confirmación al usuario,
 
*Este método muestra una ventana pidiendo una confirmación al usuario,
 
*Pide confirmacion para llevar a cabo una accion
 
*Pide confirmacion para llevar a cabo una accion
 
*El método devuelve un entero indicando la respuesta del usuario.
 
*El método devuelve un entero indicando la respuesta del usuario.
* Los valores de ese entero puede ser alguna de las constantes definidas en ''JOptionPane'': ç
+
* Los valores de ese entero puede ser alguna de las constantes definidas en ''JOptionPane'':  
 
  ''YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION''.
 
  ''YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION''.
  
Línea 247: Línea 283:
  
 
<source lang=java>
 
<source lang=java>
int confirmado = JOptionPane.showConfirmDialog(
+
import javax.swing.*;
  componentePadre,
+
public class DialogConfirmacion {
  "¿Lo confirmas?");
+
public static void main(String[] args) {
 
+
int confirmado = JOptionPane.showConfirmDialog(
if (JOptionPane.OK_OPTION == confirmado)
+
  null,//El component pader
  System.out.println("confirmado");
+
  "¿Deseas realizar la accion?"//Mensaje
else
+
  );
  System.out.println("vale... no borro nada...");
+
if (JOptionPane.OK_OPTION == confirmado)
 +
  System.out.println("Accion confirmada, a realizarla");
 +
else
 +
  System.out.println("Accion cancelada");
 +
}
 +
}
 
</source>
 
</source>
 
+
[[Imagen:confirmacion.png]]
muestra la siguiente imagen
+
 
+
[[Imagen:ShowConfirmDialog.jpg]]
+

Última revisión de 21:44 7 abr 2012

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg



INTEFAZ GRÁFICO EN JAVA

  • Java define el paquete javax.swing como un conjunto de clases para desarrollar interfaces gráficas.
  • Antes eran definidas en java.awt, pero estas no eran independientes de la plataforma
  • En el paquete java.awt siguen estando las clases para gestionar la colocación de objetos gráficos layout y tema de eventos
  • Las clases del paquete siwng están escritas en java puro y sí son independientes de la plataforma
  • Siwng el potencial de la clase para el interfaz gráfico de java
  • Actualmente aparece la tecnología javaFX que también incluye desarrollos gráficos, en desarrollos web

CLASIFICACION

  • Los elementos gráficos se pueden clasificar en
  1. Contenedores como una ventana contendrán otros contenedores y contenidos
  2. Contenidos como un botón que necesitans un contenedor para poder aparecer
  • En el siguiente tema analizaremos esta clasificacion

A continuación estudiaremos contenedores específicos para

  • Pedir datos
  • Mostrar mensajes

Son cuadros de diágolo específicos implementados en la clase 'javax.swing.JOptionPane'


Icon define.gif

Definición

Dialogo modal
En genera una ventana es modal por que hasta que no se cierre no se puede seguir con la ejecución del programa
(en particular una caja de diálogo es un tipo especial de ventana)



JOptionPane y diálogos modales

Tenemos 4 posibilidades con cuatro de sus métodos

  1. showOptionDialog() Nos muestra una serie de opciones y nos devuelve un entero con la opción seleccionada
  2. showInputDialog() Permite que introduzcamos texto por un interfaz gráfico
  3. showMessagedialog() Nos visualiza un mensaje
  4. showConfirmDialog() Nos pide una confirmación
  • Estos métodos están tanto disponibles para ventanas normales como para JInternalFrame.
  • Están ventanas están creadas ya que responden a operativa muy habitual en desarrollos.
p.e pedir un dato, pedir una confirmación mostrar un mensaje,...


Parámetros de los métodos

Estos métodos tienen unos parámetros muy similares en sus constructores que se comentan a continuacion

Component parentComponent
Es el objeto padre de la ventana que contiene la caja de diálogo
La caja de diálogo se centrará en su padre
Su valor puede ser null en cuyo caso se centrará en la pantalla
Objetos Component pueden ser la ventana desde la que se llama o un botón,...(ver la diversidad)
Object mensaje Es el mensaje que aparece en el dialog. Casi siempre es un string
String title ==> Es el título de la caja dialogo

JOptionPane.showInputDialog() 1 parámetros

  • Tenemos sobrecargado el método con 1,2,3,4 o 6 parámetros.
  • El método Retorna el String insertado o null si cancelamos

A continuación ponemos un ejemplo de cada uno.

  • Argumentos Aquí solo le pasamos el mensaje
  1. Object mensaje (Este object se convierte a string si le pasamos un string.
  • El método Retorna el String insertado en el diálogo o null si cancelamos
import javax.swing.JOptionPane;
public class CajaDialogo {
	public static void main(String []a){
		String seleccion;
 
		/*Con un argumento
		 * Object mensaje ==> Es el mensaje que aparece en el dialog*/
		seleccion = JOptionPane.showInputDialog("Dime tu nombre");
		System.out.println("Nombre introducido "+seleccion);
	}//End de main
}//End de la clase

Input 1 parametro.png

JOptionPane.showInputDialog() 2 parámetros
  • Argumentos Aquí le pasamos:
  1. el Component padre del dialog o valor null
  2. el Object mensaje que aparece en la pantalla
  • Para este ejemplo creamos una ventana aunque todavía no hemos visto como hacerlo
public class CajaDialogo extends JFrame{//Mi clase extiende  de JFrame que es una típica ven window
	CajaDialogo(){ //Constructor que no hace nada
	}
	public static void main(String []a){
		String seleccion;
		CajaDialogo v = new CajaDialogo();//Defino la ventana princial
		v.setBounds(100,100,400,400); //Posición y tamaño de la ventana
		v.setTitle("Probando JOptionPane");//Le pongo título a la ventana principal
		v.setVisible(true);//Hago la ventana principal visible.
		/*Con dos argumento
		 * v ==> componet padre del dialog 
		 * Object mensaje ==> Es el mensaje que aparece en el dialog*/
		seleccion = JOptionPane.showInputDialog(v,"Dime tu nombre");
		System.out.println("Nombre introducido "+seleccion);
	}//End de main
}//End de la clase

Input 2 parametros.png


JOptionPane.showInputDialog() 3 parámetros

Ahora para simplificar el primer parámetro ponemos null y así no tenemos que crear la ventana principal

  • Argumentos Aquí le pasamos:
  1. Component padre del dialog o valor null
  2. Object mensaje que aparece en la pantalla
  3. Object texto por defecto el texto que aparece en la caja de diálogo (por defecto aparecía vacío)
import javax.swing.JOptionPane;
public class CajaDialogo {//Mi clase extiende  de JFrame que es una típica ven window
	public static void main(String []a){
		String seleccion;
		/*Con dos argumento
		 * v ==> componet padre del dialog 
		 * Object mensaje ==> Es el mensaje que aparece en el dialog
		 * Object textoDefecto ==> Es el texto que aparece por defecto en el dialog*/
		seleccion = JOptionPane.showInputDialog(null,"Dime tu nombre","Este es el texto por defecto");
		System.out.println("Nombre introducido "+seleccion);
	}//End de main
}//End de la clase

Input 3 parametros.png

JOptionPane.showInputDialog() 4 parámetros

Seguimos poniendo null al primer parámetro (component padre) para simplificar

  • Argumentos Aquí le pasamos:
  1. Component padre del dialog o valor null
  2. Object mensaje que aparece en la pantalla
  3. String titulo ==> Es el título de la caja de diálogo(Por defecto aparecía entrada)
  4. int icono que se visualiza por defecto para indicar el tipo de mensaje. Valores posibles
   ERROR_MESSAGE
   INFORMATION_MESSAGE
   WARNING_MESSAGE
   QUESTION_MESSAGE
   PLAIN_MESSAGE 
CONSTANTES PARA ICONOS DE JOptionPane
'Constante JOptionPane' JOptionPane.ERROR_MESSAGE .INFORMATION_MESSAGE .WARNIG_MESSAGE .QUESTION_MESSAGE .PLAIN_MESSAGE
'Constante numérica' 0 1 2 3 -1
Dialog generado Input 4 parametros error.png Input 4 parametros informacion.png Input 4 parametros warning.png Input 4 parametros question.png Input 4 parametros plain.png
import javax.swing.JOptionPane;
import javax.swing.JFrame;
public class CajaDialogo {//Mi clase extiende  de JFrame que es una típica ven window
	public static void main(String []a){
		String seleccion;
		/*Con cuatro argumento
		 * null ==> componet padre del dialog 
		 * Object mensaje ==> Es el mensaje que aparece en el dialog
		 * String  titulo==> Es el título que aparece 
		 * int que representa el icono que se muestra 
*/
		seleccion = JOptionPane.showInputDialog(null, "Dime tu nombre","Icono de información",JOptionPane.INFORMATION_MESSAGE);
		System.out.println("Nombre introducido "+seleccion);
	}//End de main
}//End de la clase

Input 4 parametros.png

JOptionPane.showInputDialog() 7 parámetros
  • En este caso en lugar de presentar una caja de texto para escribir
  • Presentamos un combobox o caja combinada con diferentes opciones
  • La lista de opciones se presenta en un array de objetos
  • El método devuelve un object, ya que la lista es de object, aunque lo normal es trabajar con String

Seguimos poniendo null al primer parámetro (component padre) para simplificar

 public static void main(String []a){
  String estudios[]={"Ciclo Medio","Ciclo Superior","Diplomatura ","Ingeniería","Grado"};
  String seleccion =(String) JOptionPane.showInputDialog( //Debemos convertir el Object a String
	  			             null, //Component parent
			                     "Indica estudios", //String mensaje
				             "Estudios Realizados",//String título
				             JOptionPane.QUESTION_MESSAGE, //Icono por defecto
				             null, //Icono personalizado
				             estudios,//Object[] ==> Vector con valores
			                     estudios[2]//Valor por defecto seleccionado
			    );
	}//End de main
}//End de la clase

Input 6 parametros sin icono.png

  • Observar que el 5º parámetro es un Ico o icono que remplazaría al icono por defecto del 4º parámetro :
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
public class CajaDialogo {//Mi clase extiende  de JFrame que es una típica ven window
	public static void main(String []a){
		String seleccion;
		String estudios[]={"Ciclo Medio","Ciclo Superior","Diplomatura ","Ingeniería","Grado"};
		Icon icono = new ImageIcon("iconos/cd.png");
		System.out.print("icono -"+icono.toString()+"-");
		seleccion =(String) JOptionPane.showInputDialog(
				null, //Component parent
			    "Indica estudios", //String mensaje
				"Estudios Realizados",//String título
				JOptionPane.QUESTION_MESSAGE, //Icono por defecto
				icono, //Icono personalizado
				estudios,//Object[] ==> Vector con valores
			    estudios[2]//Valor por defecto seleccionado
			    );
	}//End de main
}//End de la clase
  • En este caso el directorio iconos están al mismo nivel que src dependiendo del directorio del proyecto

Input 6 parametros.png Input 6 parametros b.png


ShowOptionDialog

  • Es la ventana más configurable de todas.
  • A continuación hacemos una lista de los parámetros
  • El concepto de los parámetros se utiliza también en el resto de los métodos
  • parentComponent: A partir de este componente, se intentará determinar cual es el componente que hace de padre del JOptionPane. Se puede pasar null, pero conviene pasar, por ejemplo, el botón desde el cual se lanza la acción que provoca que se visualice el JOptionPane.La ventana que aparece centrada en la pantalla o en el componet padre
  • message: El mensaje a mostrar, habitualmente un String, aunque vale cualquier Object cuyo método toString() devuelva algo con sentido.
  • title: El título para la ventana.
  • optionType: Un entero indicando qué opciones queremos que tenga la ventana. Los posibles valores son las constantes definidas en JOptionPane: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, o OK_CANCEL_OPTION.
  • messageType: Un entero para indicar qué tipo de mensaje estamos mostrando. Este tipo servirá para que se determine qué icono mostrar. Los posibles valores son constantes definidas en JOptionPane: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, o PLAIN_MESSAGE
  • icon: Un icono para mostrar. Si ponemos null, saldrá el icono adecuado según el parámetro messageType.
  • options: Un array de objects que determinan las posibles opciones. Si los objetos son componentes visuales, aparecerán tal cual como opciones. Si son String, el JOptionPane pondrá tantos botones como String. Si son cualquier otra cosa, se les tratará como String llamando al método toString(). Si se pasa null, saldrán los botones por defecto que se hayan indicado en optionType.
  • initialValue: Selección por defecto. Debe ser uno de los Object que hayamos pasado en el parámetro options. Se puede pasar null.

La llamada a JOptionPane.showOptionDialog() devuelve un entero que representa la opción que ha seleccionado el usuario. La primera de las opciones del array es la posición cero. Si se cierra la ventana con la cruz de la esquina superior derecha, el método devolverá -1.

import javax.swing.JOptionPane;
public class DialogoShow {
 public static void main(String []s){
       int seleccion = JOptionPane.showOptionDialog(
	    	                   null,//El component padre
			           "Seleccione opcion", //El mensaje que aparece en el dialog
			           "Selector de opciones",//El titilo
			           JOptionPane.YES_NO_CANCEL_OPTION,//Botones que apareces para seleccionar
			           JOptionPane.QUESTION_MESSAGE,//Icono por defecto
			           null,    // null para icono por defecto, o un icono personalizado
			           new Object[] { "opcion 1", "opcion 2", "opcion 3" },   // botones presonalizados  null 
			   								  //botones por defecto en este caso
			                                                                  // YES, NO y CANCEL
			           "opcion 1");//Botón selecconado por defecto
        if (seleccion != -1)
	   System.out.println("seleccionada opcion " + (seleccion + 1));//El botón primero es valor 0...
 }//End del main
}//End de la clase

y la ventana que se obtiene con el código anterior

ShowOptionDialog.jpg


.showMessageDialog() Mostrar mensaje

  • Esta es la más sencilla de todas, sólo muestra una ventana de aviso al usuario.
  • La ejecución se detiene hasta que el usuario cierra la ventana.
import javax.swing.*;
public class DialogMensaje {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JOptionPane.showMessageDialog(
				   null,//Componet el padre
				   "Un aviso del programa"//Mesaje que aparece por defecto
				   );
				System.out.println("ya estas avisado");
	}
}

Este médoto también tiene sobrecarga para modificar Título e icono por defecto.

ShowMessageDialog.jpg

showConfirmDialog():Mesaje pidiendo confirmación

  • Este método muestra una ventana pidiendo una confirmación al usuario,
  • Pide confirmacion para llevar a cabo una accion
  • El método devuelve un entero indicando la respuesta del usuario.
  • Los valores de ese entero puede ser alguna de las constantes definidas en JOptionPane:
YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION.

El siguiente ejemplo de codigo

import javax.swing.*;
public class DialogConfirmacion {
	public static void main(String[] args) {
		int confirmado = JOptionPane.showConfirmDialog(
				   null,//El component pader
				   "¿Deseas realizar la accion?"//Mensaje
				   );
				if (JOptionPane.OK_OPTION == confirmado)
				   System.out.println("Accion confirmada, a realizarla");
				else
				   System.out.println("Accion cancelada");
	}
}

Confirmacion.png