Salve a tutti, scrivo qui perchè sono agli inizi e ho difficoltà a progettare interfacce grafiche con l'AWT.
La richiesta è questa:Realizzare una GUI formata da 5 TextField in alto, due Label al centro, un Button in
basso. Si usino in modo appropriato i Panel per evitare che i componenti vengano stirati. I 5 TextField sono in un vettore. Si scriva un ascoltatore da associare al Button della GUI: l'ascoltatore deve calcolare la media dei valori nei 5 TextField e visualizzarla nella Label. I TextField possono con-
tenere int. Si usi il metodo Integer.parseInt() per convertire uno String in un int. Si faccia attenzione alla media di int. Non si usino classi interne.
Per la prima parte non ho particolari problemi, mentre non so come fare per l'ascoltatore del bottone., ci ho provato in tutti i modi. Grazie.
codice:
import java.awt.*;
import java.awt.event.*;
public class GUIMah extends Frame {
public GUIMah() {
super("GUIMah");
Panel p = new Panel(); //nuovo pannello
//vettore di tipo textfield di 5 posizioni
TextField[] tf = new TextField[5];
//scorro l'array e ad ogni posizione creo una nuova istanza di Textfield, e l'aggiungo al panel
for(int i = 0; i<tf.length; i++) {
tf[i] = new TextField("", 5);
p.add(tf[i]);
}
Panel p1 = new Panel();
int media = 0;
Label l1 = new Label("Media: ");
Label l2 = new Label(""+ media);
p1.add(l1);
p1.add(l2);
Panel p2 = new Panel();
Button b = new Button("Media");
b.addActionListener(new AscoltatoreBottone());
p2.add(b);
this.add(p, BorderLayout.NORTH);
this.add(p1, BorderLayout.CENTER);
this.add(p2, BorderLayout.SOUTH);
setVisible(true);
pack();
//ascoltatore per la window con classe interna,DA MODIFICARE SENZA CLASSE INTERNA
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("Finestra Chiusa");
System.exit(0);
}
});
}
public class AscoltatoreBottone implements ActionListener {
private int media = 0;
private TextField[] tf;
private Label l2;
public void actionPerformed(ActionEvent e) {
for(int j = 0; j <=tf.length; j++) {
media = media + Integer.parseInt(tf[j].getText());
}
media = media/5;
l2.setText("" + media);
System.out.println("Calcolo Media");
}
}
public static void main(String[] args) {
Frame f = new GUIMah();
}
}