Uff, pues mira, soy bastante malo, tengo demasiadas dudas, pero ahi te va la primera.
En lo que mas me confundo es en el manejo de ventanas, hice este ejemplo bastante sencillo con netBeans.
Tengo mi clase principal la cual tiene este codigo solamente:
package manejoventanas;
import Ventanas.VentanaPrincipal;
public class Principal {
public static void main(String[] args) {
VentanaPrincipal venP = new VentanaPrincipal();
venP.setLocationRelativeTo(null);
venP.setFocusable(true);
venP.setVisible(true);
}
}
Ahora, Tengo la VentanaPrincipal que es un JFrame y es asi:
como podrás ver, solo tiene un botón el cual ejecuta este código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Ventana1 ven1 = new Ventana1();
ven1.setLocationRelativeTo(null);
ven1.setVisible(true);
this.dispose();
}
Prácticamente lo que intento hacer es que al momento de darle click en "Mostrar la ventana 1", vaya a la ventana 1 y cierre la ventana en la que estaba, como ir hacia delante, mi duda es si esto es correcto, es la mejor forma de hacerlo?
Ahora, al momento de ir a la ventana1 es un JFrame aparecerá algo así:
y el botón ejecuta esto:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Ventana2 ven2 = new Ventana2();
ven2.setLocationRelativeTo(null);
ven2.setVisible(true);
this.dispose();
}
Ahi estoy haciendo lo mismo para avanzar a la ventana 2 es un JFrame, estoy creando una nueva ventana y luego estoy utilizando this.dispose() para cerrar la ventana actual y avanzar.
Tengo otra ventana 2, en la que solo tiene 1 boton, exactamente igual que en la anterior con la diferencia de que ese botón va a la ventana principal, osea la primera que aparecio al ejecutar el programa, el boton de la ventana 2 ejecutaria esto:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
VentanaPrincipal venP = new VentanaPrincipal();
venP.setLocationRelativeTo(null);
venP.setVisible(true);
this.dispose();
}
Como ves, ahí estaría creando una NUEVA ventana principal para poder acceder a la ventana principal a través de botones, imaginando que yo agregaría información en la ventana principal como por ejemplo, nombre y usuario, etc, entonces se perdería dicha información por que al volver a la ventana principal por que estoy creando una nueva, no se si realmente logre explicarme.
Como dije arriba, he escuchado hablar del modelo vista controlador, no se si esto realmente me ayude con mi problema o mas bien duda de como hacerlo, o existe alguna forma de hacer esto de forma ordenada.
Existen soluciones como por ejemplo el jpanel desk o algo asi, pero es bastante feo.
He estado investigando, y recomiendan que solo exista un JFrame el cual seria la ventana principal y que los demás sean JDialogs que seria como por ejemplo la ventana 1 y ventana 2, no se si realmente esta sea la solución y que tanta diferencia hay entre un jframe a un jdialog.
Tengo muchas dudas sobre las interfaces gráficas, pero creo que esta es la que mas peso tiene y creo que si logro comprender como debería de funcionar esto correctamente posiblemente solucione las demás por mi cuenta.
Lo siento mucho si no logre explicarme correctamente, de antemano, Gracias por intentar ayudarme, el próximo semestre tendré clases de patrones de diseño, ahora mismo estoy de vacaciones y realmente quiero aprender sobre esto, nunca antes he programado, Java es mi primer lenguaje de programación y realmente me gusto, pero esto de interfaces gráficas... para mi son un dolor de cabeza haha.
Gracias de antemano, Saludos