Programación General > Java
Manejo De Frames Consecutivos
(1/1)
acek:
:huh: que mas mi people de solocode, pille que lo que pasa es que toy haciend un programilla que maneja un Form principal y este tiene 4 botones y esos abren a su vez otros Form , pero la principal queda activa y lo que yo quiero es
1. que cuando le opriman un boton a la principal no me saque otra instancia de la que ya esta creada osea de los otros Frames si ya estan abiertos
2. que cuando se cierre el frame se descargue completamente y no tengo que ponerle el visible en false
no se como hacerlo no se si me entienda pero por fa ayuda urgente si!!! por fa.... :rolleyes:
gracias, att Acek, qualiti colombia :lightsabre:
silverfox:
Hola...
A ver estas respuestas:
--- Citar ---1. que cuando le opriman un boton a la principal no me saque otra instancia de la que ya esta creada osea de los otros Frames si ya estan abiertos
--- Fin de la cita ---
Si te sucede esto es que, dentro del método de proceso de eventos tienes un new JFrame (). Tendrías que hacer lo siguiente: Utiliza una variable JFrame como parte de tu formulario principal y ponla de inicio a null. Dentro de tu método haz:
if (mi_jframe1 == null) mi_jframe= new JFrame()...
else mi_jframe.setVisible(true) //Y / O cualquier otra acción que quieras.
Para más información, puedes buscar por internet datos sobre el patrón Singleton (no tiene traducción), que es algo parecido a esto.
--- Citar ---2. que cuando se cierre el frame se descargue completamente y no tengo que ponerle el visible en false
--- Fin de la cita ---
No te recomiendo que hagas esto con tu ventana principal. Más aún, si en algún Frame guardas referencias a otros, porque los perderás. De todas formas, la forma de hacerlo existe.
Echa un vistazo al API de Java, en la clase JFrame, en herencia de JavaSwing.WindowConstants, a la constante DISPOSE_ON_CLOSE.
Espero que te sirva todo esto.
Ya nos contarás.
Suerte.
Silverfox
acek:
puyes gracias silverfox, pero la cosa es que estoy manejando un Frame en herencia con la clase, tengo
class GUI extends Frame{}
y no se como evitar que hagan mas de una instancia de esa clase, y respecto a lo otro la idea es que los datos hay ingresados no interesa que se pierda si no que por decirlo asi se mate ese Form y luego se pueda crear la instancia de nuevo :lol: si me entiendes, no se como hacerlo :scream:
silverfox:
Hola... vamos a ver:
La creación de una sóla instancia de la clase viene dada por un patrón que se llama Singleton.
La implementación de ese patrón en Java es de lo más sencillo. Para tu ejemplo:
--- Código: Text ---public class GUI extends Frame { private static GUI gui_unica= null; private GUI () { //constructor privado de GUI, hacer las tareas oportunas aqui. } public static GUI getInstance(){ if (gui_unica== null){ gui_unica= new GUI (); } return gui_unica; } ...
Así es imposible tener más de una instancia de esta clase, porque sucesivas llamadas a getInstance() te devolverán la primera que creaste.
--- Citar ---los datos hay ingresados no interesa que se pierda si no que por decirlo asi se mate ese Form y luego se pueda crear la instancia de nuevo
--- Fin de la cita ---
No sé qué quieres hacer exactamente. Cuando dices que se cree la instancia de nuevo, supongo que quieres volver a crearla con los datos que tenía la última vez.
Lo que te recomendaría para eso es que la hagas invisible y ya está (siempre que no sea una ventana modal) y podrás acceder a los datos que tiene sin problemas y cuando vuelvas a hacerla visible, conservará todo.
Un saludo.
Silverfox
Editado: Corregir errores en el código.
acek:
:P hey gracias, sos un astro!!!!! :devil: que buena
Navegación
Ir a la versión completa