Ancora più azione!
Consideriamo il seguente codice:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Iva extends Applet implements ActionListener {
Button tasto = new Button("premi!");
Font textFont = new Font("Dialog", Font.BOLD, 20);
String Str = new String("");
String Ris = new String("");
TextField yourText = new TextField(Str, 15);
int x=0;
int y=0;
public void init() {
add(tasto);
tasto.addActionListener(this);
add(yourText);
}
public void actionPerformed(ActionEvent e) {
Str = yourText.getText();
x = Integer.parseInt(Str);
y = x + x / 5;
Ris = Integer.toString(y);
repaint();
}
public void paint (Graphics g) {
g.setFont(textFont);
g.setColor(Color.red);
g.drawString("Il prezzo con IVA è:" + Ris, 20, 50);
}
}
dopo averlo inserito in una pagina web il risultato dovrebbe essere:
Se inserite 100000 e premete il pulsante, viene fuori: "Il prezzo con IVA è: 120000". Però se inserite 100008, viene fuori: "Il prezzo con IVA è: 120009" (il 20% di 100008 è 20001,6, quindi dovrebbe venire 120009,6 ma il formato usato non tiene conto dei decimali).
Analizziamo il codice. Dopo avere importato i soliti pacchetti, si dichiarano le variabili; abbiamo due oggetti nuovi: due stringhe e un campo testo (TextField). Il campo testo si costruisce con: TextField(Str, int) dove Str è una stringa e dove int è un intero che indica il numero di spazi (lunghezza del campo testo); la stringa può anche essere vuota. Il parametro int non è indispensabile (cioè si può anche indicare TextField(Str)).
Nel blocco init() si aggiungono il pulsante con l'ActionListener e il campo testo. Il campo testo servirà all'utente per immettere i suoi dati.
E' nel blocco actionPerformed che si svolge l'azione.
Dobbiamo ricuperare i dati dell'utente, metterli nel formato giusto (int) per manipolarli e poi ritrasformali per rispedirli all'utente.
Applichiamo la funzione getText() al campo testo yourText e mettiamo il risultato nella stringa Str (più precisamente l'oggetto yourText chiama il metodo getText()).
Con Integer.parseInt(Str) traduciamo il contenuto della stringa Str nel formato int (interi), abbiamo l'intero x col quale possiamo fare dei conti (una stringa è una serie di caratteri, non si possono fare conti con i caratteri).
Calcoliamo il 20% (x/5) e lo aggiungiamo ad x, otteniamo l'intero y (siccome la divisione è fatta con int, i decimali vanno persi; nel formato int, 5/2 è uguale a 2. Vedremo altri formati di numeri.)
Adesso mettiamo il risultato (l'int y) in una stringa con Integer.toString(y) = Ris
Ci rimane solo da "stampare" (disegnare) la stringa Ris, però volendo avere una presentazione più carina vogliamo che il risultato sia preceduto da "Il prezzo con IVA è:", per questo concatteniamo la stringa "Il prezzo con IVA è:" e la stringa Ris con il segno + e "stampiamo" la stringa "Il prezzo con IVA è:" + Ris
In questa semplice applet abbiamo visto come prendere dati dall'utente, manipolarli e restituirli, per questo sono necessari procedimenti di conversione tra tipi diversi (essenzialmente da String a int e viceversa con Integer.parseInt() e Integer.toString())