Article View: es.comp.lenguajes.java
Article #29519Re: Manejar un evento (una pulsaci�n de bot�n) en Java
From: Juan Gonzalo de Silva Medina
Date: Sat, 20 Dec 1997 00:00
Date: Sat, 20 Dec 1997 00:00
146 lines
5954 bytes
5954 bytes
Este es un mensaje multipartes en formato MIME.
--------------FA6B1C07BE89D5894483B3FE
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Chano G�mez escribi�:
> > Hola, estimados amigos. Somos un grupillo de programadores aconstumbrados a
> > la programaci�n no orientada a objetos. �ltimamente hemos dedicido pasarnos
> > a Java y la programaci�n orientada a objetos. Tenemos escrito un programa
> > muy interesante (o eso pensamos nosotros) pero a la hora de hacer la
> > interfaz de usuario no sabemos controlar si se ha pulsado un bot�n o no, y
> > reaccionar en consecuencia. Estamos programando una aplicaci�n
> > independiente, no un applet.
>
> Como no es un applet, supongo que tendr�s el bot�n colocado dentro de un Frame.
> En ese caso, cada vez que el usuario pulse el bot�n, se ejecutar� el m�todo
> action() del Frame correspondiente. Debes hacer una clase derivada de Frame
> que, en su m�todo action() compruebe de d�nde le viene el evento, y act�e en
> consecuencia.
>
> A continuaci�n tienes un ejemplo.
>
> Un saludo.
>
> Chano.
>
> ===============================================
>
> import java.awt.*;
>
> class prueba{
> public static void main(String args[]){
> Frame f = new miFrame();
> f.show();
> }
> }
>
> class miFrame extends Frame{
> Button boton;
>
> public miFrame(){
> super("Ventana principal");
> resize(300,200);
> setLayout(null);
> boton = new Button("Hola");
> boton.resize(100,50);
> boton.move(100,100);
> add(boton);
> }
>
> public boolean action(Event e, Object o){
> if (e.target == boton){
> System.out.println("Has pulsado el bot�n");
> return true;
> }
> return super.action(e,o);
> }
> }
No quiero pecar de entrometido, lo que ha dicho Chano es muy correcto, pero cuidado
con una cosa, esto es muy v�lido, pero SUN aconseja el uso de los
eventos-escuchadores, que se aplica en los BEANS para el manejo de los eventos y el
c�digo que has puesto da un warning en JDK 1.1.4 ya que "action" es un m�todo
obsoleto y puede ser retirado en las versiones siguientes (no tengo claro si en una
release superior tambien, pero...). Siguiendo con el 1.1.x tambi�n lo da "resize",
y "move"
Veamos un ejemplo con la versi�n 1.1.x:
/*--------------------------------------------*/
import java.awt.*;
import java.awt.event.*;
class miFrame2 extends Frame implements ActionListener{
Button boton;
public miFrame2(){
super("Ventana principal");
setSize(300,200);
setLayout(null);
boton = new Button("Hola");
boton.setSize(100,50);
boton.setLocation(new Point(100,100));
boton.addActionListener(this);
add(boton);
}
public void actionPerformed(ActionEvent e){
if (e.getSource() == boton){
System.out.println("Has pulsado el bot\u00f3n");
return;
}
}
public static void main(String args[]){
Frame f = new miFrame2();
f.show();
}
}
/*--------------------------------------------*/
Bueno, sustancialmente como puede verse es el mismo, pero en la descripci�n de la
clase se indica que esta es capaz de recibir eventos del tipo de acci�n (que son
los que se producen en los botones), una vez realizados ciertos retoques para
adaptar a 1.1.4, tenemos que le he agregado boton.addActionListener(this), con esto
se le indica al boton que cuando se produzcan en �l eventos de acci�n lo envie
(adem�s de otros destinos (listeners) que tenga) a la ventana para que lo sepamos.
La manera como la ventana se entera de que se ha producido el evento es que el
boton la llama directamente, invocando el m�todo actionPerformed (capacidad que se
defini� al implementar ActionListener).
Este m�todo simplifica mucho la implementaci�n de una mensajeria potente y facil a
nivel de usuario.
Saludos,
--------------FA6B1C07BE89D5894483B3FE
Content-Type: text/x-vcard; charset=us-ascii; name="vcard.vcf"
Content-Transfer-Encoding: 7bit
Content-Description: Tarjeta de Juan Gonzalo de Silva Medina
Content-Disposition: attachment; filename="vcard.vcf"
begin: vcard
fn: Juan Gonzalo de Silva Medina
n: de Silva Medina;Juan Gonzalo
org: EL MONTE - Dpto. Desarrollo Inform�tico
adr: AV. Doctor Fedriani n� 23 p1 2C;;;Sevilla;Sevilla;41009;Espa�a
email;internet: gonzalo@caymasa.es
title: Analista Programador
tel;work: 34-5-4591436
tel;fax: 34-5-4591448
tel;home: 34-5-4906327
x-mozilla-cpt: ;0
x-mozilla-html: TRUE
version: 2.1
end: vcard
--------------FA6B1C07BE89D5894483B3FE--
Technical Details
Message-ID:
<349BF12C.E2B9BEC1@caymasa.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<01bd0d89$30e77e00$adc97ac3@rigo> <349D7A7E.F6C69882@ran.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,a013bbe0c332d1ef X-Google-Attributes: gid1116f3,public From: Juan Gonzalo de Silva Medina <gonzalo@caymasa.es> Subject: Re: Manejar un evento (una pulsaci�n de bot�n) en Java Date: 1997/12/20 Message-ID: <349BF12C.E2B9BEC1@caymasa.es> X-Deja-AN: 309199566 References: <01bd0d89$30e77e00$adc97ac3@rigo> <349D7A7E.F6C69882@ran.es> To: rigo@redestb.es Content-Type: multipart/mixed; boundary="------------FA6B1C07BE89D5894483B3FE" Organization: Unisource Espana NEWS SERVER Mime-Version: 1.0 Newsgroups: es.comp.lenguajes.java