Article View: es.comp.lenguajes.java
Article #29017Re: AWT: Tomar alternativas segun decision del usuario
From: Jos� Manuel Rivera L�pez
Date: Wed, 11 Feb 1998 00:00
Date: Wed, 11 Feb 1998 00:00
73 lines
3045 bytes
3045 bytes
Jose A. Brihuega wrote:
>...
>
> El m�todo que no soy capaz de hacer es respuestaUsuario(), que crear�a
> un Frame con un mensaje y unos botones, devolviendo unos valores
> predefinidos REINTENTAR o CANCELAR seg�n el boton pulsado. Esta funci�n
> tendr�a que esperar la respuesta del usuario, en lugar de retornar
> inmediatamente como hace.
>
> El asunto es que el funcionamiento del AWT es as�ncrono, no es
> bloqueante, como podr�a ser un getchar() en C. Por tanto, la l�gica de
> programaci�n que he presentado arriba no me sirve.
>
> La soluci�n bestia de bloquear a la fuerza el flujo con algo asi como
> meterme en un bucle o hacer un Thread.currentThread().suspend() no vale
> pues dejo bloqueado todo el sistema de eventos, y los botones dejan de
> responder.
>
> �Cu�l es la mejor manera de realizar esto manejando los eventos del AWT?
> Se me ocurre dividir el trabajo entre varias funciones, donde cada una
> responda a eventos de cada bot�n. Me resulta dif�cil adaptar la l�gica
> del programa a esto, sobre todo si hay varias decisiones de ese tipo.
>
> Este tipo de decisiones alternativas son normales en muchos programas,
> as� que no veo l�gico que la implementaci�n sea tan compleja.
>
> Gracias por adelantado.
>
> jose.brihuega@uca.es
Si quieres crear una ventana bloqueante, es decir una ventana de aviso
que no deje acceder a su predecesora, lo mejor es que uses Dialog en vez
de Frame. Seria algo as�:
-----------------------------------------------------------------
boolean bloqueo = true;
Dialog tralala;
String tituloDeTralala = new String("Titulo del Dialog tralala");
Frame f;
Component c;
while (f == null){
c = c.getParent();
if (c instanceof Frame)
f = (Frame)c;
}
tralala = new Dialog(padre, titulo, bloqueo);
------------------------------------------------------------------
Eso si, mejor te construyes una clase tipo:
public class Tralala extends Dialog{
Applet applet;
int tipo;
Tralala(Frame parent, String titulo, boolean bloqueo, Applet applet,
int tipo){
...
}
}
que te solucione todas las opciones. La variable applet te servir� para
acceder a funciones del padre: Imag�nate que tienes una funci�n llamada
setPorEjemplo dentro del applet. Pues dentro de Tralala haces:
applet.setPorEjemplo(...)
y ya est�.
Espero haberte sido de ayuda.
Technical Details
Message-ID:
<34E1D30F.487E@campus.uoc.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<34E1943F.4585DB98@uca.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,d95308338d9aebb2 X-Google-Attributes: gid1116f3,public From: Jos� Manuel Rivera L�pez <jrivera@campus.uoc.es> Subject: Re: AWT: Tomar alternativas segun decision del usuario Date: 1998/02/11 Message-ID: <34E1D30F.487E@campus.uoc.es> X-Deja-AN: 324161822 Content-Transfer-Encoding: 8bit References: <34E1943F.4585DB98@uca.es> Mime-Version: 1.0 Distribution: inet To: "Jose A. Brihuega" <jose.brihuega@uca.es> Content-Type: text/plain; charset=iso-8859-1 Organization: Universitat Autonoma de Barcelona Newsgroups: es.comp.lenguajes.java