Uso básico de elementos Swing con NetBeans – 08 – Uso básico de JOptionPane con eventos. Ej. 03.

En esta guía veremos otro de los elemento del JOptionPane, el showOptionDialog, tiene la función de mostrar una lista de opciones, normalmente la elección entre “Sí” “No”, “Aceptar” “Cancelar” u otras parecidas. El ejemplo que veremos nos muestra tres formas diferentes en que podemos configurar nuestro showOptionDialog.
Como siempre para facilitar el diseño debemos de crear paquetes, una para nuestros formularios y otra para las imágenes que se usan habitualmente, en cuestión de imágenes para botones es recomendable “png” con una dimensión 32x32 para los demás usos es a criterio de cada uno. En la imagen del diseño que se expone más abajo se especifican los puntos importantes.
Diseñamos un formulario utilizando un JFrame (Nombre del formulario UsoJOptionPane3). En el ejemplo utilizaremos una lista seleccionable de forma individual utilizando JRadioButton, un botón personalizado para ejecutar nuestra selección y un campo de texto JTextField que reflejará nuestra selección. Dependiendo de nuestra selección se ejecutará un modelo de showOptionDialog, cada modelo tiene su utilidad en diferentes situaciones. En la imagen siguiente vemos el diseño de nuestro formulario, cada elemento tiene un nombre de variable como se especifica en la imagen, tomar en cuenta este punto ya que es necesario para referenciar los objetos. Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho sobre la misma y clic en “Cambiar nombre de variable…”. (clic sobre la imagen para ampliar)
Creamos los métodos siguiente en modo fuente, los métodos creados por nosotros las ubicamos al final de la declaración de variables, justo antes de la llave de cierre general. Se agregan comentario para aclarar la función de cada línea de código.
Código Java
    private void inicio(){
//Agrupamos nuestros JRadioButton creados.
ButtonGroup group = new ButtonGroup();
group.add(jRB1);
group.add(jRB2);
group.add(jRB3);
//Incicamos que jRB1 este seleccionado de arranque.
jRB1.setSelected(true);
//Indicamos un valor para nuestra variable de clase tipo ImageIcon
img = createImageIcon("/com/swing/basic/img/usergroup.png");
}
//Método para crear ImageIcon pasando una url.
protected static ImageIcon createImageIcon(String path) {
//UsoJOptionPane es el nombre de la clase de nuestro jFrame.
java.net.URL imgURL = UsoJOptionPane3.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Archivo no encontrado: " + path);
return null;
}
}

//Método que se ejecutará al precionar nuestro botón
private void ver(){
//Dependiendo que JRadioButton este marcado se ejecutará uno de los "if"
if(jRB1.isSelected()){
//La selección que se haga devuelve un entero.
//La guardamos en nuestra variable de clase creado "n"
//Si cerramos si elegir devuelve -1, si seleccionamos el primer elemento devuelve 0, siguiente 1;
n = JOptionPane.showConfirmDialog(
null,
"¿Te gusta el planeta marte?",
"Pregunta",
JOptionPane.YES_NO_OPTION);
if(n == 0){
rp.setText("Sí, me gusta el planeta marte.");
}
else if (n == 1){
rp.setText("No, no me gusta el planeta marte.");
}
}
else if(jRB2.isSelected()){
//Opciones personalizadas
Object[] opt = {"Sí, me gusta...",
"No, para nada...","No se responder..."};
n = JOptionPane.showOptionDialog(null,
"¿Te gusta el planeta marte?",
"Pregunta",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
opt,
opt[0]);
//Como hay tres opciones, el valor devuelte puede ser 0, 1 o 2.
if(n == 0){
rp.setText("Sí, me gusta el planeta marte.");
}
else if (n == 1){
rp.setText("No, no me gusta el planeta marte.");
}
else if (n == 2){
rp.setText("No se que responder...");
}
}

else if(jRB3.isSelected()){
Object[] opt = {"Sí, me agradan...",
"No, para nada..."};
n = JOptionPane.showOptionDialog(null,
"¿Te agradan los terrícolas?",
"Pregunta",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
img,//Icono personalizado
opt,//Opcion personalizada
opt[0]);

if(n == 0){
rp.setText("Sí, me agradan los terrícolas.");
}
else if (n == 1) {
rp.setText("No, no me agradan los terricolas.");
}
}
}
Antes de continuar veremos que método se llama desde el constructor y las importaciones necesarias.
El paso siguiente es establece un evento para nuestro botón, esto le dará la funcionalidad que necesitamos. El evento que normalmente se utiliza para este tipo de elementos es el ActionPerformed. Si ya vieron alguna guía anterior a esta, podrán saber la ubicación habitual tanto para la lista de eventos, como también los métodos que hayamos creado al igual de la forma en que se implementan estos eventos y llamadas a métodos.
Código Java
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
ver();
}
En este punto ya podremos ejecutar nuestro formulario y comprobar su funcionalidad. (Por si hay alguna duda en el proceso, debemos hacer clic derecho sobre nuestro archivo fuente y presionar “ejecutar archivo” ya que nuestro proyecto no tiene una clase principal definida) (clic sobre la imagen para ampliar)

No hay comentarios :

Publicar un comentario en la entrada