🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #29017

Re: AWT: Tomar alternativas segun decision del usuario

#29017
From: Jos� Manuel Rivera L�pez
Date: Wed, 11 Feb 1998 00:00
73 lines
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-mail
References: <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