Newsgroup: it.comp.java
Titolo: Perchè non mi funzionano i bottoni OK ed esi

Ciao
prima di tutto con il bottone ESCI forrei uscire dall'aplet
e poi perche non mi funziona il tasto OK grazie
questo č un semplice programma di moltiplicazione con un Applet
eccolo:
import java.applet.Applet;
import java.awt.*;
import java.lang.*;
public class Moltiplica1 extends Applet
        Button bt_OK, bt_pulisci, bt_esci, bt_a, bt_b, bt_r;
        TextField tf_a,tf_b,tf_r;
        Label lb_a, lb_b, lb_r;
        public void init()
        {
         Color ci= new Color(255,0,0);
         setBackground(ci);
         setLayout (null);
         bt_OK = new Button ( " OK ");
         bt_pulisci = new Button ( "pulisci");
         tf_a = new TextField(10);
         tf_b = new TextField(10);
         tf_r = new TextField(10);
         lb_a = new Label ("a:");
         lb_b = new Label ("b:");
         lb_r = new Label ("r:");
         bt_esci = new Button( "esci");
         bt_a = new Button ("A");
         bt_b = new Button ("B");
         bt_r = new Button ("R");
         bt_OK.setBounds (450,30,40,20);
         bt_pulisci.setBounds (300,300,40,30);
         tf_a.setBounds(100,60,40,20);
         bt_a.setBounds (100,100,40,20);
         tf_r.setBounds(300,60,80,20);
         bt_r.setBounds (300,110,30,20);
         bt_esci.setBounds (400,300,40,20);
         tf_b.setBounds (200,60,40,20);
         bt_b.setBounds (200,100,40,20);
         add (bt_OK);
         add (bt_esci);
         add (bt_pulisci);
         add (tf_a);
         add (lb_a);
         add (tf_b);
         add (lb_b);
         add (tf_r);
         add (lb_r);
         add (bt_r);
         add (bt_a);
         add (bt_b);
        // con set.bounds le dimenzioni sono la prima la distanza dal lato
sinistro, la seconda dal lato, la terza la lungezzae la 4 l'altezza
        }
        public boolean action (Event evento, Object arg)
         {
          if (evento.target instanceof Button )
           {
            String Bottone = (String)arg ;
            if (Bottone.equals ("OK"))
            {
              int a=Integer.parseInt(tf_a.getText());
              int b=Integer.parseInt(tf_b.getText());
              tf_r.setText( " "  + moltiplicazione(a,b));
			   }
			   else if (evento.target == bt_esci)
			   {
			     System.exit (0);
			   }
		      else if (evento.target == bt_pulisci)
		      {
              tf_a.setText ("");
              tf_b.setText ("");
              tf_r.setText ("");
            }
	       }
          return true;
		  }
        public int moltiplicazione (int a,int b)
        {
         if (a<b)
          {
           int x;
           x=a;
           a=b;
           b=x;
          }
         int ris= a*b;
         return ris;
        }
 }
grazie
-- 
Posted from 
laguna.tiscalinet.it
 [195.130.224.86] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 questo č un semplice programma di moltiplicazione con un Applet
[...]
Piuttosto complicato spiegartelo in due righe.
Hai definito un metodo "action" che nessuno chiamera' mai. Infatti per
intercettare gli eventi devi sovrascrivere il metodo actionPerformed
dell'interfaccia ActionListener.
1) La classe deve implementare l'interfaccia ActionListener:
public class MiaApplet extends Applet implemets ActionListener { ...
2) Questo impone che tu implementi il metodo actionPerformed di tale
interfaccia:
public void actionPerformed(ActionEvent evt)
{
	String s=evt.getActionCommand();
	if(s=="OK") {
		...
		...
	}
}
Per capire l'azione da intraprendere, come vedi si usa getActionCommand,
un controllo con instanceof basato sul tipo e' super sconsigliabile.
3) Ogni componente che e' abilitato ad inviare eventi deve essere
registrato con l'ActionListener:
bottone=new Button(...);
bottone.addActionListener(this);
(nel tuo caso addActionListener prende "this" perche' e' l'applet stessa
che ascolta le azioni).
Vi sono metodi piu' sofisticati o eleganti o + potenti per fare la cosa.
Ti consiglio vivamente di dare un'occhiata al Java Tutorial disponibile
sul sito 
java.sun.com
, tratta tutte queste cose meravigliosamente.
P.S.: non puoi scrivere codice dopo la dichiarazione di classe!!! Me ne
sono accorto ora!
Nella prog. a oggetti il codice va sempre in un metodo. Tu sei in
un'applet, devi implementare quattro metodi (init(),start(), stop()e
un'altro) e piazzare il codice dentro questi in maniera opportuna!
Ti rimando sempre al Java Tutorial, trovi anche informazioni sulla
scrittura delle applet.
-- 
Tommaso Paba
Togli ".no-spam." per rispondere (se c'e')
http://spazioweb.inwind.it/pabasoftware