🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Manejar un evento (una pulsaci�n de bot�n) en Java

#29519
From: Juan Gonzalo de Silva Medina
Date: Sat, 20 Dec 1997 00:00
146 lines
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-mail
References: <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