▷ Curso de JAVA: Como cambiar de un JPanel a otro con botón siguiente y atrás (Versión Mejorada)
Hola amigos lectores y seguidores de Software Galaxia Blogs, el dia de hoy traemos un tema de suma importancia a la hora de trabajar con una interfaz gráfica en java, vamos aprender a utilizar múltiples paneles sobre una ventana JFrame, cuando desarrollamos proyectos no siempre todas las vistas o módulos de software se van a visualizar al momento de la ejecución del programa sino que el usuario irá navegando y seleccionando las distintas opciones de nuestro software, en sí solo trabajamos con una sola ventana(JFrame) y sobre estas se irán ocultando o visualizando paneles(JPanel).
El dia de hoy aplicaremos esto a nuestro proyecto, utilizaremos dos botones(JButton), los cuales nos permitirán mostrar u ocultar paneles según los botones u opciones que se vayan seleccionando.
Hace un par de meses desarrollamos un problema similar el cual es: ▷ Curso de JAVA: Como cambiar de un JPanel a otro con botón siguiente y atrás. Este ejercicio fue bastante sencillo para comprender la idea principal de lo que se desea hacer, el dia de hoy lo llevaremos a un nivel de complejidad mayor.
El dia de hoy aplicaremos esto a nuestro proyecto, utilizaremos dos botones(JButton), los cuales nos permitirán mostrar u ocultar paneles según los botones u opciones que se vayan seleccionando.
Hace un par de meses desarrollamos un problema similar el cual es: ▷ Curso de JAVA: Como cambiar de un JPanel a otro con botón siguiente y atrás. Este ejercicio fue bastante sencillo para comprender la idea principal de lo que se desea hacer, el dia de hoy lo llevaremos a un nivel de complejidad mayor.
Si aún tienes dudas acerca de como crear un proyecto, ventanas JFrame, etc. Te invito a que mires el siguiente POST Curso de JAVA: Cómo hacer un proyecto, un paquete y un formulario?
No siendo mas comencemos!!!
Múltiples paneles con JAVA |
Explicación por VideoTutorial:
Creamos un videotutorial especialmente para ti en el cual te brindamos información detallada acerca del ejemplo que estaremos realizando acerca de los múltiples paneles aplicado a una ventana JFrame.
Explicación por Foto-Tutorial:
Iniciamos con el paso a paso de la explicación del dia de hoy, los conceptos a tener en cuenta antes de iniciar sería el uso del JFrame, JInternalFrame y JPanel, igualmente aplicar la lógica de programación como por ejemplo; estructuras condicionales, es importante resaltar que vamos a trabajar con NetBeans IDE.
La estructura de nuestro proyecto estará dividida en varios paquetes, iniciamos de la parte inferior y vamos subiendo;
tenemos el paquete views, en este paquete están todas las clases referentes a nuestra interfaz gráfica, tenemos nuestra ventana principal(JFrame), la cual servirá de contenedor de los paneles que deseamos visualizar.
Por otro lado tenemos cinco clases las cuales heredan de la clase JInternalFrame, los cuales serán nuestros paneles(los que deseamos visualizar).
Tenemos el paquete utilities, en este paquete tendremos una clase la cual tendrá métodos generales, esto quiere decir métodos que se van a utilizar en distintas clases, todos estos métodos tienen la particularidad que son de acceso public static.
Tenemos el paquete principal, el cual contendrá la clase principal esta contendrá el método main.
Tenemos el paquete images, en el cual simplemente están contenidas todas las imágenes o iconos que utilizaremos en nuestro proyecto.
Por último tenemos el paquete controller, en el cual realizaremos todas las operaciones que se requieren hacer para navegar entre los distintos paneles de nuestra interfaz gráfica.
tenemos el paquete views, en este paquete están todas las clases referentes a nuestra interfaz gráfica, tenemos nuestra ventana principal(JFrame), la cual servirá de contenedor de los paneles que deseamos visualizar.
Por otro lado tenemos cinco clases las cuales heredan de la clase JInternalFrame, los cuales serán nuestros paneles(los que deseamos visualizar).
Tenemos el paquete utilities, en este paquete tendremos una clase la cual tendrá métodos generales, esto quiere decir métodos que se van a utilizar en distintas clases, todos estos métodos tienen la particularidad que son de acceso public static.
Tenemos el paquete principal, el cual contendrá la clase principal esta contendrá el método main.
Tenemos el paquete images, en el cual simplemente están contenidas todas las imágenes o iconos que utilizaremos en nuestro proyecto.
Por último tenemos el paquete controller, en el cual realizaremos todas las operaciones que se requieren hacer para navegar entre los distintos paneles de nuestra interfaz gráfica.
2. Estructura Ventana Principal (JFrame).
Tenemos la ventana principal el cual es nuestro JFrame, tenemos el área de color gris en la cual agregaremos los respectivos paneles que deseamos visualizar, en la sección inferior tenemos dos botones los cuales lo utilizaremos para navegar entre paneles, los hemos llamado botón siguiente y botón anterior.
Estructura ventana principal JFrame |
3. Desarrollo Ejercicio Explicación.
La dinámica o el proceso que realizará nuestro programa sería el siguiente: al ejecutar nuestro programa se visualizará un panel(JInternalFrame), tendremos habilitados los respectivos botones y a medida que se vaya oprimiendo los botones se irá ocultando un panel y mostrando el siguiente panel que corresponda, básicamente este es el proceso que realizaremos.
Múltiples paneles java |
4. Desarrollo Ejercicio - Crear método disableButton().
Este es un método de suma importancia, tendremos dos restricciones cuando el primer panel esté visible, el botón anterior(btnAnterior) estará deshabilitado, y cuando el último panel esté visible el botón siguiente(btnSiguiente) estará deshabilitado, de lo contrario los dos botones estarán habilitados; para habilitar y deshabilitar un componente hacemos uso del método setEnable() le pasamos como parámetro true o false, dependiendo el estado que queremos que tenga dicho componente.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import utilities.ControladorGeneralView;
import views.PrincipalView;
import views.ViewHC1;
import views.ViewHC2;
import views.ViewHC3;
import views.ViewHC4;
import views.ViewHC5;
public class ControllerPrincipalView implements ActionListener {
private void disableButton(){
if (viewHC1.isVisible()) {
view.btnAnterior.setEnabled(false);
view.btnSiguiente.setEnabled(true);
}else if(viewHC5.isVisible()){
view.btnAnterior.setEnabled(true);
view.btnSiguiente.setEnabled(false);
}else{
view.btnAnterior.setEnabled(true);
view.btnSiguiente.setEnabled(true);
}
}
}
5. Desarrollo Ejercicio - Crear método changeViewHC().
Lo siguiente que tenemos es el método que nos va a permitir mostrar y ocultar los respectivos paneles, el cual tiene un parámetro de tipo entero, este nos va permitir identificar qué botón ha sido seleccionado; cuando se oprima el botón anterior(btnAnterior) lo identificamos con un valor de 1, cuando se oprima el botón siguiente(btnSiguiente) lo identificamos con un valor de 2.
tenemos un condicional anidado en el cual validamos si un panel está visible, analicemos el primer y último condicional; cuando el primer panel esté visible, mostraremos el siguiente panel que en este caso sería el segundo panel recordemos que el botón anterior(btnAnterior) estará deshabilitado, caso contrario pasaría cuando el último panel esté visible ya que el botón siguiente(btnSiguiente) estará deshabilitado y el panel que se visualizará será el panel 4.
Para los condicionales restantes pasara lo mismo, solamente debemos tener en cuenta que botón fue presionado para eso hacemos uso del parámetro btn y de esta manera validamos el panel que estará visible
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import utilities.ControladorGeneralView;
import views.PrincipalView;
import views.ViewHC1;
import views.ViewHC2;
import views.ViewHC3;
import views.ViewHC4;
import views.ViewHC5;
public class ControllerPrincipalView implements ActionListener {
private void chageViewHC(int btn){
if(viewHC1.isVisible()){
viewHC2.setVisible(true);
viewHC1.setVisible(false);
viewHC3.setVisible(false);
viewHC4.setVisible(false);
viewHC5.setVisible(false);
}else if(viewHC2.isVisible()){
viewHC1.setVisible((btn == 1));
viewHC3.setVisible(btn == 2);
viewHC2.setVisible(false);
viewHC4.setVisible(false);
viewHC5.setVisible(false);
}else if(viewHC3.isVisible()){
viewHC2.setVisible((btn == 1));
viewHC4.setVisible(btn == 2);
viewHC1.setVisible(false);
viewHC3.setVisible(false);
viewHC5.setVisible(false);
}else if(viewHC4.isVisible()){
viewHC3.setVisible((btn == 1));
viewHC5.setVisible(btn == 2);
viewHC1.setVisible(false);
viewHC2.setVisible(false);
viewHC4.setVisible(false);
}else if(viewHC5.isVisible()){
viewHC4.setVisible(true);
viewHC2.setVisible(false);
viewHC1.setVisible(false);
viewHC3.setVisible(false);
viewHC5.setVisible(false);
}
view.contenedorViewJpanel.validate();
}
private void disableButton(){
if (viewHC1.isVisible()) {
view.btnAnterior.setEnabled(false);
view.btnSiguiente.setEnabled(true);
}else if(viewHC5.isVisible()){
view.btnAnterior.setEnabled(true);
view.btnSiguiente.setEnabled(false);
}else{
view.btnAnterior.setEnabled(true);
view.btnSiguiente.setEnabled(true);
}
}
}
6. Recomendaciones o Sugerencias.
- Debemos agregar con anterioridad los respectivos paneles(JInternalFrame o JPanel) a nuestra ventana principal(JFrame), debemos realizar este proceso para que de esta manera podamos visualizar dichos paneles en nuestra ventana.
- Debemos llamar al método validate(), para que nuestro contenedor se actualice y de esta manera se visualice el panel deseado de manera correcta.
- El ejercicio que estuvimos realizando tiene una estructura MVC, por lo tanto la estructura de paquetes es un poco más extensa.
Agregamos los respectivos paneles |
- Trabajaremos con eventos de tipo actionListener los cuales se accionaran cada vez que oprimimos el botón siguiente(btnSiguiente) o el botón anterior(btnAnterior), llamamos el método changeView() y le pasamos como parámetro el identificador que corresponda (1 o 2), igualmente llamamos al método disbleButton().
Control eventos múltiples paneles |
Nota: todo el código expuesto el dia de hoy está disponible en un repositorio GitHub, puedes acceder a él oprimiendo el botón de descarga que se encuentra al inicio de este POST.
Con esto hemos concluido con el desarrollo del capítulo de hoy, la finalidad de esta entrada era conocer los métodos o bases necesarias que nos permitan trabajar con múltiples paneles en nuestras interfaces gráficas, dar una idea general y que ustedes puedan implementar los métodos expuestos el dia de hoy a sus proyectos.
Suscribete
si deseas aprender más sobre esta tecnología y Java en general oprime el botón de suscripción para estar atento a todo nuestro contenido.
¡Suscribete!
Si tienes alguna otra forma de implementar esta ejemplo no dudes en compartirla, y así poder compartir opiniones sobre el tema.
¿Quieres aprender a realizar aún más cosas y personalizar tus programas hechos en el lenguaje de programación JAVA?, si tu respuesta es "Sí", puedes acceder a todos los tips de JAVA que hemos estado publicando en este blog, dando clic aquí.
Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, YouTube y Google+.
Si te fue de gran ayuda este material, no olvides compartirlo con tus amigos.
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Si te fue de gran ayuda este material, no olvides compartirlo con tus amigos.
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...
No hay comentarios.