Newsgroup: it.comp.java
Titolo: aiuto

Ho provato a scrivere quest'applet che dovrebbe sommare 2 numeri inseriti in
2 campi di testo diversi, solo che quando provo a cliccare sul pulsante per
sommarli non mi viene sommato un bel niente o forse non mi viene
semplicemente visualizzato, qua di seguito c'č il testo dell'applet e anche
la classe creata per l'applet.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import it.comp.calco.Cacco;
public class Calco extends JApplet implements ActionListener
{
    private JTextField Numfield, Numufield, Risultato;
    private JLabel Campolabel, Campoulabel, Risul;
    private JButton somma;
    private int k;
    private Cacco c;
    public void init ()
    {
        c = new Cacco();
     Container c = getContentPane();
     c.setLayout ( new FlowLayout() );
     Campolabel = new JLabel ("Inserisci primo numero");
     Numfield = new JTextField (10);
     Numfield.addActionListener (this);
     c.add (Campolabel);
     c.add (Numfield);
     Campoulabel = new JLabel ("Inserisci secondo numero");
     Numufield = new JTextField (10);
     Numufield.addActionListener (this);
     c.add (Campoulabel);
     c.add (Numufield);
     Risul = new JLabel ("Il risultato č:");
     Risultato = new JTextField (30);
     Risultato.setEditable (false);
     c.add (Risul);
     c.add (Risultato);
     somma = new JButton ("Somma i numeri");
     somma.addActionListener (this);
     c.add (somma);
    Risultato.setText ("" + k);
    }
    public void actionPerformed (ActionEvent e)
    {
        if (e.getSource() == Numfield)
            c.setNum (Integer.parseInt (e.getActionCommand()));
        if (e.getSource() == Numufield)
            c.setNumu (Integer.parseInt (e.getActionCommand()));
        if (e.getSource() == somma)
            click();
    }
    public int click()
    {
        k = c.getNum() + c.getNumu();
        return k;
    }
}
Questa č la classe richiamata dall'applet
package it.comp.calco;
public class Cacco extends java.lang.Object {
    private int num;
    private int numu;
    private int sum;
    /** Creates a new instance of Class */
    public Cacco() {
    }
    public void setNum (int h){
        num = h;
}
    public void setNumu (int k){
        numu = k;
    }
    public int getNum () {
        return num;
    }
    public int getNumu() {
        return numu;
    }
 public int getSomma() {
        sum = num + numu;
        return sum;
    }
}

 la classe creata per l'applet.
Non ho ben capito il perchè di tutti questi giri...
di alcuni si ma non di tutti.
Chiama anche due variabili con lo stesso nome
("Cacco c" e "Container c", vanno bene le regole di scoping
ma cercarsele!!!)
Il funzionamento *dovrebbe* essere:
-inserisci il numero nella prima casella e batti invio
(si aspetta un actionevent dalla casella)
-inserisci il numero nella casella casella e batti invio
(si aspetta un actionevent dalla casella)
-fai click sul pulsante
Ho modificato il listato , cerca /*edoardo*/
PS: io cerchere un'altra fonte per gli esempi:
-non chiamare (finchè possibile) due oggetti con lo stesso
nome anche se è sintatticamente corretto.
-I nomi degli oggetti andrebbero in minuscolo.
quindi numField e non "NumField" così non li confondi con
i nomi delle classi.
-è la prima volta che vedo implementare in una classe
direttamente gli ascoltatori (ma questa sarà sicuramente
una carenza mia).
------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import it.comp.calco.Cacco;
public class Calco extends JApplet implements ActionListener
{
     private JTextField Numfield, Numufield, Risultato;
     private JLabel Campolabel, Campoulabel, Risul;
     private JButton somma;
     private int k;
     private Cacco c;
     public void init ()
     {
         c = new Cacco();
      Container c = getContentPane();
      c.setLayout ( new FlowLayout() );
      Campolabel = new JLabel ("Inserisci primo numero");
      Numfield = new JTextField (10);
      Numfield.addActionListener (this);
      c.add (Campolabel);
      c.add (Numfield);
      Campoulabel = new JLabel ("Inserisci secondo numero");
      Numufield = new JTextField (10);
      Numufield.addActionListener (this);
      c.add (Campoulabel);
      c.add (Numufield);
      Risul = new JLabel ("Il risultato è:");
      Risultato = new JTextField (30);
      Risultato.setEditable (false);
      c.add (Risul);
      c.add (Risultato);
      somma = new JButton ("Somma i numeri");
      somma.addActionListener (this);
      c.add (somma);
     Risultato.setText ("" + k);
     }
     public void actionPerformed (ActionEvent e)
     {
         if (e.getSource() == Numfield)
             c.setNum (Integer.parseInt (e.getActionCommand()));
         if (e.getSource() == Numufield)
             c.setNumu (Integer.parseInt (e.getActionCommand()));
         if (e.getSource() == somma){
		/*edoardo*/
             click();	//non credo che serva a molto
	    Risultato.setText(""+c.getSomma());
	}
     }
     public int click()
     {
         k = c.getNum() + c.getNumu();
         return k;
     }
}
Questa è la classe richiamata dall'applet
package it.comp.calco;
public class Cacco extends java.lang.Object {
     private int num;
     private int numu;
     private int sum;
     /** Creates a new instance of Class */
     public Cacco() {
     }
     public void setNum (int h){
         num = h;
}
     public void setNumu (int k){
         numu = k;
     }
     public int getNum () {
         return num;
     }
     public int getNumu() {
         return numu;
     }
     public int getSomma() {
         sum = num + numu;
         return sum;
     }
}
------------------------------------------------------