Per ricapitolare la base delle interfacce grafiche viste finora insieme all'uso di dati di tipo numerico proviamo per esercizio a costruire un programma che calcola l'area di un rettangolo: in pratica questo qui sotto.
Potrebbe essere una buona idea a questo punto provare a farlo da solo, in ogni caso qui sotto c'è il programma con alcune spiegazioni inserite come commenti nella parte di calcolo. Supponiamo che i lati del rettangolo siano numeri interi, del resto per i numeri in virgola mobile cambia molto poco.
Il programma
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class Rettangolo extends Application {
Label lBase = new Label("base:");
TextField tfBase = new TextField();
Label lAltezza = new Label("altezza:");
TextField tfAltezza = new TextField();
Button bArea = new Button("area");
Label lArea = new Label("?");
@Override
public void start(Stage finestra) {
GridPane griglia = new GridPane();
griglia.add(lBase, 0, 0);
griglia.add(tfBase, 1, 0);
griglia.add(lAltezza, 0, 1);
griglia.add(tfAltezza, 1, 1);
griglia.add(bArea, 0, 2);
griglia.add(lArea, 1, 2);
bArea.setOnAction(e -> calcolaArea());
Scene scena = new Scene(griglia);
finestra.setTitle("Rettangolo");
finestra.setScene(scena);
finestra.show();
}
private void calcolaArea(){
// dichiaro la variabile "area" che userò dopo
int area;
// leggo il contenuto della casella, è un testo
// quindi uso una variabile di tipo String
String testoBase = tfBase.getText();
// a me serve però il numero corrispondente
// così che io possa usare la variabile "base"
// per fare la moltiplicazione
// quindi devo trasformare un testo in un numero intero
// es: "56" → 56
int base = Integer.parseInt(testoBase);
// posso fare in un solo passaggio quello che ho fatto
// nelle due righe di programma sopra
int altezza = Integer.parseInt(tfAltezza.getText());
// calcolo l'area del rettangolo
area = base * altezza;
// scrivo l'area nell'etichetta, siccome però nelle
// etichette posso scrivere soltanto dei testi
// concateno (uso il +) una stringa vuota ""
// alla variabile int area in modo da avere un testo
// un po' l'operazione inversa fatta da Integer.parseInt
// 12 → "12"
lArea.setText(""+area);
}
public static void main(String[] args) {
launch(args);
}
}
Per esercizio si può aggiungere il pulsante per calcolare il perimetro.