Newsgroup: it.comp.java
Titolo: Ciao! ...chi era che stava facendo una calcolatrice?

Eccola!
:-)
non utilizzo textField, molto più comodo utilizzare una lable per il
posizionamento a destra...mi pare fosse questo
il problema...
Comunque mi pare utile perchè mostra l'utilizo dell'interfaccia
ActionListener e la gestione di eventi...non è poì così banale
(anche se non è difficilissimo)
Copia e incolla...file html con intestazione opportuna
e parte l'applet.
*******************************************
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class EsApplet68 extends Applet{
   double operando1=0.0;
   double operando2D = 1.0;
   boolean faiDivisione=false;
   boolean faiSomma =false;
   boolean faiSottrazione=false;
   boolean faiProdotto=false;
   String cifra="";
   OsservaAzioni ossAction;
   Dimension d;
   int h,w;
   Button[] pulnum;
   Button[] pulope;
   Button[] riferimenti;
   Panel[] carte;
   Label risultato;
   class OsservaAzioni implements ActionListener{
      public void actionPerformed(ActionEvent ae){
         Button app = (Button)ae.getSource();
         // le cifre vengono accumulate in cifra**************
         if(app==riferimenti[0]){   // 0
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[1]){   // 1
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[2]){  // 2
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[3]){  // 3
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[4]){  // 4
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[5]){  // 5
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[6]){  // 6
           cifra += ae.getActionCommand();
           risultato.setText(cifra);
         }
         if(app==riferimenti[7]){  // 7
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[8]){  // 8
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[9]){  // 9
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         if(app==riferimenti[10]){ // .
            cifra += ae.getActionCommand();
            risultato.setText(cifra);
         }
         //***************************************************
         //operatori *****************************************
         if(app==riferimenti[11]){ // /
            Double num = new Double(cifra);
            if(!faiDivisione){
               operando1 = num.doubleValue();
               faiDivisione = true;
               faiProdotto=faiSomma=faiSottrazione=false;
            }else{
               operando2D = num.doubleValue();
               operando1 /= operando2D;
            }
            cifra = new String("");
            risultato.setText(String.valueOf(operando1));
         }
         if(app==riferimenti[12]){ // *
            Double num = new Double(cifra);
            if(!faiProdotto){
               operando1 = num.doubleValue();
               faiProdotto = true;
               faiSomma=faiSottrazione=faiDivisione=false;
            }else{
               operando2D = num.doubleValue();
               operando1 *= operando2D;
            }
            cifra = new String("");
            risultato.setText(String.valueOf(operando1));
         }
         if(app==riferimenti[13]){ // -
            Double num = new Double(cifra);
            if(!faiSottrazione){
               operando1 = num.doubleValue();
               faiSottrazione=true;
               faiDivisione=faiProdotto=faiSomma=false;
            }else{
               operando2D = num.doubleValue();
               operando1 -= operando2D;
            }
            cifra = new String("");
            risultato.setText(String.valueOf(operando1));
         }
         if(app==riferimenti[14]){ // +
            Double num = new Double(cifra);
            if(!faiSomma){
               operando1 = num.doubleValue();
               faiSomma = true;
               faiDivisione=faiSottrazione=faiProdotto=false;
            }else{
               operando2D = num.doubleValue();
               operando1+=operando2D;
            }
            cifra = new String("");
            risultato.setText(String.valueOf(operando1));
         }
         if(app==riferimenti[15]){ // =
            Double num = new Double(cifra);
            if(faiDivisione){
               operando2D=num.doubleValue();
               operando1 /= operando2D;
               cifra = new String(String.valueOf(operando1));
               risultato.setText(String.valueOf(operando1));
            }
            if(faiProdotto){
               operando2D=num.doubleValue();
               operando1 *= operando2D;
               cifra = new String(String.valueOf(operando1));
               risultato.setText(String.valueOf(operando1));
            }
            if(faiSomma){
               operando2D=num.doubleValue();
               operando1 += operando2D;
               cifra = new String(String.valueOf(operando1));
               risultato.setText(String.valueOf(operando1));
            }
            if(faiSottrazione){
               operando2D=num.doubleValue();
               operando1 -= operando2D;
               cifra = new String(String.valueOf(operando1));
               risultato.setText(String.valueOf(operando1));
            }
            faiDivisione=faiSomma=faiProdotto=faiSottrazione=false;
         }
         if(app==riferimenti[16]){ // canc
            cifra = new String("");
            operando1 = 0.0;
            operando2D = 1.0;
            faiSomma=faiProdotto=false;
            faiDivisione=faiSottrazione=false;
            risultato.setText(String.valueOf(operando1));
         }
      }
   }
   public void init(){
      d =getSize();
      w = d.width;
      h = d.height;
      //osservatore degli eventi
      OsservaAzioni ossAction = new OsservaAzioni();
      //************************
      //schermo per la visualizzazione della calcolatrice
      risultato = new Label();
      risultato.setAlignment(Label.RIGHT);
      risultato.setBackground(Color.white);
      //*************************************************
      //pulsanti della calcolatrice*********************
      pulnum = new Button[10];
      for(int i=0;i<10;i++){// cifre
         pulnum[i] = new Button(String.valueOf(i));
         pulnum[i].setBackground(Color.yellow);
         pulnum[i].addActionListener(ossAction);//osservatore
      }
      pulope = new Button[7];//operazioni
      pulope[0] = new Button("/");
      pulope[1] = new Button("*");
      pulope[2] = new Button("-");
      pulope[3] = new Button("+");
      pulope[4] = new Button("=");
      pulope[4].setBackground(Color.yellow);
      pulope[4].addActionListener(ossAction);
      pulope[5] = new Button(".");
      pulope[5].setBackground(Color.green);
      pulope[5].addActionListener(ossAction);
      pulope[6] = new Button("Canc");
      pulope[6].setBackground(Color.red);
      pulope[6].addActionListener(ossAction);
      for(int i=0;i<4;i++){
         pulope[i].setBackground(Color.green);
         pulope[i].addActionListener(ossAction);//osservatore
      }
      //*************************************************
      // i pulsanti in totale sono: 17
      riferimenti = new Button[17];
      //******************************
      carte = new Panel[5];
      //pannello che contiene i pulsanti dei numeri e del punto
      carte[0] = new Panel();
      carte[0].setLayout(new GridLayout(4,3));
      for(int i=0;i<10;i++)// primi dieci riferimenti...
         riferimenti[i] = (Button)carte[0].add(pulnum[i]);//metto le cifre
      riferimenti[10] = (Button)carte[0].add(pulope[5]);//undicesimo...
      //*******************************************************
      //pannello che contiene i pulsanti delle operazioni
      carte[1] = new Panel();
      carte[1].setLayout(new GridLayout(4,1));
      for(int i=0;i<4;i++)
         riferimenti[11+i] = (Button)carte[1].add(pulope[i]);//...15
      //*************************************************
      //pannello che contiene il pulsante uguale e canc
      carte[2] = new Panel();
      carte[2].setLayout(new GridLayout(1,2,2,2));
      riferimenti[15] = (Button)carte[2].add(pulope[4]);//...16
      riferimenti[16] = (Button)carte[2].add(pulope[6]);//...17
      //***********************************************
      //pannello che contiene lo schermo del risultato;
      carte[3] = new Panel();
      carte[3].setLayout(new BorderLayout());
      carte[3].add(risultato,BorderLayout.CENTER);
      //***********************************************
      //pannello che contiene i pulsanti operazione e numeri
      carte[4] = new Panel();
      carte[4].setBackground(Color.blue);
      carte[4].setLayout(new BorderLayout(5,5));
      carte[4].add(carte[0],BorderLayout.CENTER);
      carte[4].add(carte[1],BorderLayout.EAST);
      //****************************************************
      setLayout(new BorderLayout(5,5));
      setBackground(Color.blue);
      add(carte[3],BorderLayout.NORTH);
      add(carte[4],BorderLayout.CENTER);
      add(carte[2],BorderLayout.SOUTH);
   }
   public void start(){}
   public void paint(Graphics g){
   }
   public void stop(){}
   public void destroy(){}
}
******************************************
spero di essere stato utile al "misterioso" che stava lavorando
alla calcolatrice
                        IL SANTO
p.s.
Camilleri! che stai facendo?

 Eccola!
L'intento e' lodevole
uL

 L'intento e' lodevole
Anche il risultato
            IL SANTO
;)

 alla calcolatrice
Te la diverti eh... ;)
Bella, Christian
----------------------------
     Christian Giordano
    Multimedia Developer
 
http://cgws.nuthinking.com
 --------------------------
 
www.nuthinking.com
----------------------------

 Te la diverti eh... ;)
Sě  ;)
Ci sto prendendo gusto con un "giocattolo"
nuovo.
                    IL SANTO
p.s.
Sarai mica snob, vero? ;)

> Sarai mica snob, vero? ;)
Sì, ma come hai fatto a capirlo?


 Sě, ma come hai fatto a capirlo?
dal fatto che non sei nessuno.
          IL SANTO
:)







 Sě, ma come hai fatto a capirlo?
Dalla risposta idiota.
          IL SANTO
:)































             IL SANTO
Ammetto di essere stato un po' criptico (la scusa e' la solita, mancanza
di tempo): l'intento di aiutare la gente e' lodevole, il modo un po' meno.
Non e' cosi' che funziona un ng: ma se tu vuoi puoi fare come hanno fatto,
prima di te, in molti. Uno due mesi a risolvere problemini aggratis e poi
via, verso altre frontiere: ne abbiamo visti a frotte.
Capisco che la tua posizione di neolaureato non ancora occupato ti conceda
molto tempo libero, ma interrogati se questo e' il modo migliore di
aiutare altri ad apprendere!
uL
P.S.
ho visto anche che hai scritto molti altri msg, sparando alzo zero qua e
la'. Anche questo non e' un bel modo di porsi in una comunita' che
frequenti da poco, dove c'e' gente che si conosce e frequenta (con alti e
bassi, ovviamente) persino da 5 e piu' anni, magari avendo postato
migliaia di msg: lo faresti in una comunita' non telematica?
P.P.S.
non sono entrato in questioni tecniche perche' non era l'intenzione del
post originale. Visto che tu hai spostato la questione su quel lato, se ti
interessa il mio punto di vista lo facciamo, e gli spunti sono
essenzialmente due:
- gli array che ridimensionano a manina non denotano un buon uso delle
Collection Java esistenti 
- il codice che proponi e' molto, ma molto, ma troppo, strutturato. Per
intenderci, molto C, poco OO. Un codice con una batteria di if, in gergo,
"puzza" di strutturato lontano un miglio. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 "puzza" di strutturato lontano un miglio.
E' vero...me ne rendevo conto mentre "veniva fuori" ( azz...tutto sto
codice per una calcolatrice?...di sicuro non è la soluzione ottima...)
Per me è stata un'esercitazione sull'utilizzo dell'interfaccia
ActionListener
e su come "tentare" di costruire un'interfaccia grafica utilizzando panelli
e gestori di layout...
                IL SANTO
p.s.
Il tuo sito è interessante, tratta di argomenti di cui ignoravo
l'esistenza...

 Agli strumenti che il linguaggio ti offre: poco.
Fin troppo vero, e la cosa gia' fa danni a non finire.
Meglio evitare di compiere l'errore pure qui, nevvero? ;)
-- 
Fighting for peace is like fucking for virginity
ObjectZone - 
http://space.tin.it/computer/csadun

l'esistenza...
Purtroppo non sei l'unico. :)
Buona permanenza.