Java - como hago que mi programa se bloquee

 
Vista:

como hago que mi programa se bloquee

Publicado por Quique (Valencia) (10 intervenciones) el 29/05/2001 11:25:55
En mi applet java, al pulsar un boton se crea una nueva clase que es:

public class mi_clase extends JFrame implements ActionListener

Pertendo que el programa que crea el objeto nuevo de la clase mi_clase se espere a que la clase acabe (se cierre la ventana del jframe), y que cuando se cierre la ventana, que se continue con la ejecución del programa que crea el objeto nuevo del tipo "mi_clase"

Debe ser muy sencillo, pero me he hecho la picha un lio (no se hacerlo)

Gracias desde España
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como hago que mi programa se bloquee

Publicado por Luli (24 intervenciones) el 29/05/2001 17:34:18
Hola:

En lugar de heredar de JFrame deberías heredar de JDialog y hacer un diálogo modal (eso impedirá que tu applet se ejecute mientras no se cierre el diálogo). Hacerlo es muy sencillo:

public class mi_clase extends JDialog implements ActionListener {

...

public mi_clase(Frame frameDelApplet, .....){
super(frameDelApplet, true); //el true indica que quieres que sea modal
...
}
}

Para obtener el frame del applet si mal no recuerdo era algo así:

Frame f = this.getParent();
while(f != null && !(f instanceof Frame) f = this.getParent();

if(f != null) //tienes ya el Frame

Eso si, me temo que esto no te servirá si pretendes que el applet se ejecute sobre un navegador. Los navegadores por cuestiones de seguridad no dejan que los applets muestren diálogos modales a menos que sean applets firmados y que pidan permisos al usuario.

Suerte,

Luli
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No funciona tu solución

Publicado por quique (10 intervenciones) el 30/05/2001 11:21:07
No funciona tu solución.

Aparentemente es una buena solución, el problema está en que de un applet no se puede sacar un Frame, lo único que puedo sacar es:

En el while : Applet1[panel0,0,0,600x600,layout=java.awt.BorderLayout]

La función

f = this.getParent();

Me da un container, y no un Frame. Lo muestro de la siguiente manera:

System.out.println("En el while : "+f);

Y el resultado es lo anterior:
En el while : Applet1[panel0,0,0,600x600,layout=java.awt.BorderLayout]

De todas formas, en el caso en que yo no estubiera haciendo un applet, sino un Frame, supongo que tu solución funcionaría.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No funciona tu solución

Publicado por Luli (24 intervenciones) el 31/05/2001 11:48:24
La solución correcta para obtener el Frame del Applet es:

Frame f = javax.swing.JOptionPane.getFrameForComponent(this);
if(f == null) {
escribe("No puedo obtener el frame del applet, tocan dialogos no modales!!!!");
f= new java.awt.Frame();
}
else escribe("TENGO EL FRAME!!!!!");

Suerte,

Luli
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar