🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Eventos

#17203
From: DrPanic
Date: Sat, 25 Nov 2000 00:00
62 lines
3452 bytes
On Sat, 25 Nov 2000 03:05:05 +0100, Juan Gonzalo de Silva Medina
<gonzalo@caymasa.es> wrote:


>
>Tsh! �Seguro? yo no lo tengo tan claro, si es como dices en tu mensaje, 
>haciendo que el applet sea listener de los eventos de raton del cambas 
>(el arbol)...
>
>No s�, no s�, suena como hacerse listener del rat�n para un boton y as� 
>saber cuando ha sido pulsado, no, no me cuadra...

Pues es el sistema de eventos de AWT, tu creas un bot�n y te registras
como listener para que cuando alguien achucha el bot�n te enteres, en
AWT desde el JDK1.1 el sistema de eventos es as�, date cuenta que es
practicamente igual que el esquema que tu me habias propuesto pero en
vez de enterarte de eventos del tipo "nodo abierto", "nodo
seleccionado" te enteras de eventos del tipo "rat�n pulsado", "tecla
pulsada" yo lo veo muy parecido pero un poco mas potente el sistema de
AWT, aunque un poco mas "de bajo nivel".

>Puedes contarme la soluci�n esa, por curiosidad...

Es la propuesta por la documentaci�n del JDK1.2 en la secci�n Guide to
Factures que est� dedicada al AWT.

Supongo que conoces el sistema de eventos de AWT donde los objetos se
registran como listeners, pues el problema surge cuando desarrollas un
componente propio normalmente a partir de Canvas y quieres que adem�s
de dibujarse responda al rat�n o al teclado y luego pase los eventos a
los listeners que tenga registrados normalmente applets, por ejemplo
si haces un bot�n especial pues hacer que se achuche o si haces un
arbol hacer que se abran o seleccionen nodos.

Una soluci�n podr�a ser el registrar al componente como un listener de
el mismo, pero tiene un problema, y es que no se garantiza el orden de
ejecuci�n de los m�todos que atienden a los eventos por eso tienes el
peligro de que por ejemplo el applet al que pertenece un componente se
entere de un click antes que el pr�pio componente, o sea, que le pilla
con el culo al aire ;-)

La soluci�n que te dan en la documentaci�n es usar el m�todo
processMouseEvent( MouseEvent e) que todos los componentes heredan y
que es el que se encarga de avisar a los listeners que es componente
tenga registrado. Bueno, pues lo que hay que hacer es redefinir ese
m�todo para que el componente haga sus cosas y luego avisar a los
listeners o sea as�:

processMouseEvent( MouseEvent e){

// Hago mis cositas aqui

//Y cuando termino aviso con:

super.processMouseEvent(e);

}

De esta manera te aseguras de que nunca nadie se va a enterar de tus
eventos antes que tu.

Bueno, y la otra soluci�n es la que propones tu.
Technical Details
Message-ID: <4p7v1tcigrctuetcbov1t4fatucvg7k22f@4ax.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <543o1t0euhsioav33kssj2d847gc2olsn4@4ax.com> <3A1D42A7.1040808@caymasa.es> <qpes1tkg6hapr78hqam3dhbvbq676s5a35@4ax.com> <3A1F1E51.6020501@caymasa.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1116f3,96293fc7c280bd56
X-Google-Attributes: gid1116f3,public
From: DrPanic <drpanic_esto_sobra_@teleline.es>
Subject: Re: Eventos
Date: 2000/11/25
Message-ID: <4p7v1tcigrctuetcbov1t4fatucvg7k22f@4ax.com>
X-Deja-AN: 697573310
Content-Transfer-Encoding: 8bit
References: <543o1t0euhsioav33kssj2d847gc2olsn4@4ax.com> <3A1D42A7.1040808@caymasa.es> <qpes1tkg6hapr78hqam3dhbvbq676s5a35@4ax.com> <3A1F1E51.6020501@caymasa.es>
Content-Type: text/plain; charset=ISO-8859-1
X-Complaints-To: abuse@wanadoo.es
X-Trace: m2newsread.uni2.es 975153961 62.36.139.12 (Sat, 25 Nov 2000 13:06:01 MET)
Organization: Servidor Usenet News de Uni2/Wanadoo
MIME-Version: 1.0
NNTP-Posting-Date: Sat, 25 Nov 2000 13:06:01 MET
Newsgroups: es.comp.lenguajes.java